class RSpec::Oj::Matchers::IncludeJson

Public Class Methods

new(expected_json = nil) click to toggle source
# File lib/rspec/oj/matchers/include_json.rb, line 11
def initialize(expected_json = nil)
  @expected_json = expected_json
  @path = nil
end

Public Instance Methods

at_path(path) click to toggle source
# File lib/rspec/oj/matchers/include_json.rb, line 31
def at_path(path)
  @path = path
  self
end
description() click to toggle source
# File lib/rspec/oj/matchers/include_json.rb, line 61
def description
  message_with_path('include JSON')
end
excluding(*keys) click to toggle source
# File lib/rspec/oj/matchers/include_json.rb, line 41
def excluding(*keys)
  excluded_keys.merge(keys.map(&:to_s))
  self
end
failure_message() click to toggle source
# File lib/rspec/oj/matchers/include_json.rb, line 51
def failure_message
  message_with_path("Expected #{@actual_json} to include #{@expected_json}")
end
Also aliased as: failure_message_for_should
failure_message_for_should()
Alias for: failure_message
failure_message_for_should_not()
failure_message_when_negated() click to toggle source
# File lib/rspec/oj/matchers/include_json.rb, line 56
def failure_message_when_negated
  message_with_path("Expected #{@actual_json} to not include #{@expected_json}")
end
from_file(path) click to toggle source
# File lib/rspec/oj/matchers/include_json.rb, line 36
def from_file(path)
  @expected_json = load_json(path)
  self
end
including(*keys) click to toggle source
# File lib/rspec/oj/matchers/include_json.rb, line 46
def including(*keys)
  excluded_keys.subtract(keys.map(&:to_s))
  self
end
matches?(actual_json) click to toggle source
# File lib/rspec/oj/matchers/include_json.rb, line 16
def matches?(actual_json)
  raise 'Expected included JSON not provided' if @expected_json.nil?

  @actual_json = actual_json

  actual = parse_json(actual_json, @path)
  expected = exclude_keys(parse_json(@expected_json))
  case actual
  when Hash then actual.values.map { |v| exclude_keys(v) }.include?(expected)
  when Array then actual.map { |e| exclude_keys(e) }.include?(expected)
  when String then actual.include?(expected)
  else false
  end
end