lib/cistern/client.rb in cistern-2.2.3 vs lib/cistern/client.rb in cistern-2.2.4

- old
+ new

@@ -1,7 +1,6 @@ module Cistern::Client - module Collections def collections service.collections end @@ -9,11 +8,11 @@ service.requests end end # custom include - def self.with(options={}) + def self.with(options = {}) client_module = Module.new custom_include = <<-EOS def self.included(klass) Cistern::Client.setup(klass, #{options.inspect}) @@ -27,26 +26,26 @@ client_module end # vanilla include def self.included(klass) - self.setup(klass) + setup(klass) super end - def self.setup(klass, options={}) - request_class = options[:request] || "Request" - collection_class = options[:collection] || "Collection" - model_class = options[:model] || "Model" - singular_class = options[:singular] || "Singular" + def self.setup(klass, options = {}) + request_class = options[:request] || 'Request' + collection_class = options[:collection] || 'Collection' + model_class = options[:model] || 'Model' + singular_class = options[:singular] || 'Singular' interface = options[:interface] || :class interface_callback = (:class == interface) ? :inherited : :included unless klass.name - raise ArgumentError, "can't turn anonymous class into a Cistern service" + fail ArgumentError, "can't turn anonymous class into a Cistern service" end klass.class_eval <<-EOS, __FILE__, __LINE__ module Collections include ::Cistern::Client::Collections @@ -154,15 +153,22 @@ klass::Real.send(:extend, Cistern::WaitFor) klass::Real.timeout_error = klass::Timeout end module ClassMethods + def mock! + @mocking = true + end - def mock!; @mocking = true; end - def mocking?; @mocking; end - def unmock!; @mocking = false; end + def mocking? + @mocking + end + def unmock! + @mocking = false + end + def collections @collections ||= [] end def models @@ -184,74 +190,74 @@ def requests @_requests ||= [] end def requires(*args) - self.required_arguments.concat(args) + required_arguments.concat(args) end def recognizes(*args) - self.recognized_arguments.concat(args) + recognized_arguments.concat(args) end - def validate_options(options={}) + 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}" + fail "Missing required options: #{missing_required_options.inspect}" end unrecognized_options = options.keys - (required_arguments + recognized_arguments) unless unrecognized_options.empty? - raise "Unrecognized options: #{unrecognized_options.inspect}" + fail "Unrecognized options: #{unrecognized_options.inspect}" end end def setup return true if @_setup requests.each do |klass| name = klass.service_method || - Cistern::String.camelize(Cistern::String.demodulize(klass.name)) + Cistern::String.camelize(Cistern::String.demodulize(klass.name)) Cistern::Request.service_request(self, klass, name) end collections.each do |klass| name = klass.service_method || - Cistern::String.underscore(klass.name.gsub("#{self.name}::", "").gsub("::", "")) + Cistern::String.underscore(klass.name.gsub("#{self.name}::", '').gsub('::', '')) Cistern::Collection.service_collection(self, klass, name) end models.each do |klass| name = klass.service_method || - Cistern::String.underscore(klass.name.gsub("#{self.name}::", "").gsub("::", "")) + Cistern::String.underscore(klass.name.gsub("#{self.name}::", '').gsub('::', '')) Cistern::Model.service_model(self, klass, name) end singularities.each do |klass| name = klass.service_method || - Cistern::String.underscore(klass.name.gsub("#{self.name}::", "").gsub("::", "")) + Cistern::String.underscore(klass.name.gsub("#{self.name}::", '').gsub('::', '')) Cistern::Singular.service_singular(self, klass, name) end @_setup = true end - def new(options={}) + def new(options = {}) setup validate_options(options) - self.const_get(self.mocking? ? :Mock : :Real).new(options) + const_get(self.mocking? ? :Mock : :Real).new(options) end def reset! - self.const_get(:Mock).reset! + const_get(:Mock).reset! end end end