class JSONAPI::Resources::Matchers::HaveAttribute

Attributes

name[RW]
resource[RW]

Public Class Methods

new(name) click to toggle source
# File lib/jsonapi/resources/matchers/have_attribute.rb, line 8
def initialize(name)
  self.name = name
end

Public Instance Methods

description() click to toggle source
# File lib/jsonapi/resources/matchers/have_attribute.rb, line 32
def description
  "have attribute #{name}"
end
failure_message() click to toggle source
# File lib/jsonapi/resources/matchers/have_attribute.rb, line 27
def failure_message
  resource_name = resource.class.name.demodulize
  %Q(expected #{resource_name} to have attribute #{name})
end
matches?(resource) click to toggle source
# File lib/jsonapi/resources/matchers/have_attribute.rb, line 12
def matches?(resource)
  self.resource = resource

  CheckSerialization.(self.resource)

  resource_class = resource.class

  serialized_hash = JSONAPI::ResourceSerializer.new(resource_class).
    serialize_to_hash(resource).with_indifferent_access
  expected_key = JSONAPI.configuration.key_formatter.format(name.to_s)
  attributes = serialized_hash["data"]["attributes"]
  return false if attributes.nil?
  attributes.has_key?(expected_key)
end