module Her::WebMock::Model
Public Instance Methods
stub_all(collection, options = {})
click to toggle source
# File lib/her/webmock/model.rb, line 116 def stub_all(collection, options = {}) model_class = self collection_attributes = collection.map { |object| Helper.attributes_without_embedded_associations(model_class, object) } response = { model_class.pluralized_parsed_root_element => collection_attributes } response = options[:response_body].merge(response) if options[:response_body] request_stub = stub_request(:get, model_class.use_api.options[:url] + model_class.collection_path). to_return(body: JSON.generate(response), status: 200) request_params = Helper.request_params(options) request_stub.with(request_params) unless request_params.empty? collection.each { |object| stub_associations(model_class, object) } request_stub end
stub_associations(klass, object)
click to toggle source
# File lib/her/webmock/model.rb, line 41 def stub_associations(klass, object) attributes = object.respond_to?(:attributes) ? object.attributes : object klass.associations.each do |type, association_metadata_ary| association_metadata_ary.each do |association_metadata| association = attributes[association_metadata[:name]] if association case type when :belongs_to Object.const_get(association_metadata[:class_name]).stub_find(association) else # TODO fail NotImplementedError end end end end end
stub_create(object, options = {})
click to toggle source
# File lib/her/webmock/model.rb, line 61 def stub_create(object, options = {}) model_class = self attributes = object.is_a?(Her::Model) ? Helper.attributes_without_embedded_associations(model_class, object) : object fail "Must pass in an object with an id attribute" unless attributes[:id] if model_class.parsed_root_element response = { model_class.parsed_root_element => attributes } else response = attributes end attributes_without_id = attributes.except(:id) request_stub = stub_request(:post, model_class.use_api.options[:url] + model_class.build_request_path(attributes_without_id)). to_return(body: JSON.generate(response), status: 200) request_params = Helper.request_params(options) request_stub.with(request_params) unless request_params.empty? if options[:stub_related] stub_find(object) stub_all([object]) end stub_associations(model_class, object) request_stub end
stub_find(object, options = {})
click to toggle source
# File lib/her/webmock/model.rb, line 93 def stub_find(object, options = {}) model_class = self attributes = object.is_a?(Her::Model) ? Helper.attributes_without_embedded_associations(model_class, object) : object if model_class.parsed_root_element response = { model_class.parsed_root_element => attributes } else response = attributes end request_stub = stub_request(:get, model_class.use_api.options[:url] + model_class.build_request_path(attributes)). to_return(body: JSON.generate(response), status: 200) request_params = Helper.request_params(options) request_stub.with(request_params) unless request_params.empty? stub_associations(model_class, object) request_stub end