class JSONAPI::Resources::Matchers::Relationship
Attributes
expected_class_name[RW]
expected_relation_name[RW]
name[RW]
relationship_type[RW]
resource[RW]
Public Class Methods
new(relationship_type, name)
click to toggle source
# File lib/jsonapi/resources/matchers/relationship.rb, line 12 def initialize(relationship_type, name) self.relationship_type = relationship_type self.name = name end
Public Instance Methods
description()
click to toggle source
# File lib/jsonapi/resources/matchers/relationship.rb, line 17 def description "#{humanized_relationship_type} `#{name}`" end
failure_message()
click to toggle source
# File lib/jsonapi/resources/matchers/relationship.rb, line 57 def failure_message resource_name = resource.class.name.demodulize message = ["expected `#{resource_name}` to #{humanized_relationship_type} `#{name}`"] if self.expected_class_name message << "with class name `#{self.expected_class_name}`" end if self.expected_relation_name message << "with relation name `#{self.expected_relation_name}`" end message.join(" ") end
has_key_in_relationships?()
click to toggle source
# File lib/jsonapi/resources/matchers/relationship.rb, line 38 def has_key_in_relationships? serialized_hash = JSONAPI::ResourceSerializer.new(resource.class). serialize_to_hash(resource).with_indifferent_access expected_key = JSONAPI.configuration.key_formatter.format(name.to_s) relationships = serialized_hash["data"]["relationships"] return false if relationships.nil? relationships.has_key?(expected_key) end
humanized_relationship_type()
click to toggle source
# File lib/jsonapi/resources/matchers/relationship.rb, line 21 def humanized_relationship_type relationship_type.to_s.gsub('_',' ') end
is_serializable?()
click to toggle source
# File lib/jsonapi/resources/matchers/relationship.rb, line 34 def is_serializable? CheckSerialization.(self.resource) end
matches?(resource)
click to toggle source
# File lib/jsonapi/resources/matchers/relationship.rb, line 25 def matches?(resource) self.resource = resource is_serializable? && has_key_in_relationships? && matches_class_name? && matches_relation_name? end
matches_class_name?()
click to toggle source
# File lib/jsonapi/resources/matchers/relationship.rb, line 69 def matches_class_name? return true if self.expected_class_name.nil? association = resource.class._relationships[name] actual_class_name = association.class_name self.expected_class_name == actual_class_name end
matches_relation_name?()
click to toggle source
# File lib/jsonapi/resources/matchers/relationship.rb, line 76 def matches_relation_name? return true if self.expected_relation_name.nil? association = resource.class._relationships[name] actual_relation_name = association.relation_name({}) self.expected_relation_name == actual_relation_name end
with_class_name(name)
click to toggle source
# File lib/jsonapi/resources/matchers/relationship.rb, line 47 def with_class_name(name) self.expected_class_name = name self end
with_relation_name(name)
click to toggle source
# File lib/jsonapi/resources/matchers/relationship.rb, line 52 def with_relation_name(name) self.expected_relation_name = name self end