class RSpec::JsonApi::Matchers::MatchJsonSchema

Attributes

expected[R]

Public Class Methods

new(expected) click to toggle source
# File lib/rspec/json_api/matchers/match_json_schema.rb, line 9
def initialize(expected)
  @expected = expected
end

Public Instance Methods

failure_message() click to toggle source
# File lib/rspec/json_api/matchers/match_json_schema.rb, line 29
def failure_message
  self
end
failure_message_when_negated() click to toggle source
# File lib/rspec/json_api/matchers/match_json_schema.rb, line 33
def failure_message_when_negated
  self
end
matches?(actual) click to toggle source
# File lib/rspec/json_api/matchers/match_json_schema.rb, line 13
def matches?(actual)
  actual = JSON.parse(actual, symbolize_names: true)

  # Compare types
  return false unless actual.instance_of?(expected.class)

  if expected.instance_of?(Array)
    RSpec::JsonApi::CompareArray.compare(actual, expected)
  else
    # Compare actual and expected schema
    return false unless actual.deep_keys == expected.deep_keys

    RSpec::JsonApi::CompareHash.compare(actual, expected)
  end
end