lib/cistern/service.rb in cistern-0.6.0 vs lib/cistern/service.rb in cistern-0.7.0
- old
+ new
@@ -32,20 +32,25 @@
def self.service
#{klass.name}
end
class Real
+ def initialize(options={})
+ end
end
class Mock
+ def initialize(options={})
+ end
end
EOS
klass.send(:const_set, :Timeout, Class.new(Cistern::Error))
klass::Mock.send(:include, klass::Collections)
klass::Mock.send(:extend, Cistern::WaitFor)
+ klass::Mock.send(:extend, Cistern::Data)
klass::Mock.timeout_error = klass::Timeout
klass::Real.send(:include, klass::Collections)
klass::Real.send(:extend, Cistern::WaitFor)
klass::Real.timeout_error = klass::Timeout
end
@@ -106,16 +111,19 @@
collections << [collection_name, options]
end
def validate_options(options={})
required_options = Cistern::Hash.slice(options, *required_arguments)
+
missing_required_options = required_arguments - required_options.keys
+
unless missing_required_options.empty?
raise "Missing required options: #{missing_required_options.inspect}"
end
- recognized_options = Cistern::Hash.slice(options, *(required_arguments + recognized_arguments))
+
unrecognized_options = options.keys - (required_arguments + recognized_arguments)
+
unless unrecognized_options.empty?
raise "Unrecognized options: #{unrecognized_options.inspect}"
end
end
@@ -130,10 +138,13 @@
#{service}::#{class_name}.new({connection: self}.merge(attributes))
end
EOS
end
requests.each do |request|
- require File.join(@request_path, request.to_s)
+ unless service::Real.method_defined?(request.to_s)
+ require File.join(@request_path, request.to_s)
+ end
+
if service::Mock.method_defined?(request)
mocked_requests << request
else
service::Mock.module_eval <<-EOS, __FILE__, __LINE__
def #{request}(*args)