class FunWithJsonApi::SchemaValidators::CheckCollectionHasAllMembers
Attributes
collection[R]
deserializer[R]
document_ids[R]
prefix[R]
Public Class Methods
call(...)
click to toggle source
# File lib/fun_with_json_api/schema_validators/check_collection_has_all_members.rb, line 6 def self.call(...) new(...).call end
new(collection, document_ids, deserializer, prefix: '/data')
click to toggle source
# File lib/fun_with_json_api/schema_validators/check_collection_has_all_members.rb, line 17 def initialize(collection, document_ids, deserializer, prefix: '/data') @collection = collection @document_ids = document_ids @deserializer = deserializer @prefix = prefix end
Public Instance Methods
call()
click to toggle source
# File lib/fun_with_json_api/schema_validators/check_collection_has_all_members.rb, line 24 def call if collection.size != document_ids.size collection_ids = deserializer.format_collection_ids(collection) raise build_missing_resources_error(collection_ids) end end
resource_type()
click to toggle source
# File lib/fun_with_json_api/schema_validators/check_collection_has_all_members.rb, line 31 def resource_type deserializer.type end
Private Instance Methods
build_missing_resource_payload(collection_ids, resource_id, index)
click to toggle source
# File lib/fun_with_json_api/schema_validators/check_collection_has_all_members.rb, line 48 def build_missing_resource_payload(collection_ids, resource_id, index) unless collection_ids.include?(resource_id) ExceptionPayload.new( pointer: "#{prefix}/#{index}", detail: missing_resource_message(resource_id) ) end end
build_missing_resources_error(collection_ids)
click to toggle source
# File lib/fun_with_json_api/schema_validators/check_collection_has_all_members.rb, line 37 def build_missing_resources_error(collection_ids) payload = document_ids.each_with_index.map do |resource_id, index| build_missing_resource_payload(collection_ids, resource_id, index) end.reject(&:nil?) missing_values = document_ids.reject { |value| collection_ids.include?(value.to_s) } message = "Couldn't find #{resource_class} items with "\ "#{id_param} in #{missing_values.inspect}" Exceptions::MissingResource.new(message, payload) end
missing_resource_message(resource_id)
click to toggle source
# File lib/fun_with_json_api/schema_validators/check_collection_has_all_members.rb, line 57 def missing_resource_message(resource_id) I18n.t( :missing_resource, resource: resource_type, resource_id: resource_id, scope: 'fun_with_json_api.find_collection_from_document' ) end