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)