class RSpec::ComposableJSONMatchers::BeJSON

@api private

Attributes

actual[R]
configuration[R]
decoded_actual[R]
matcher[R]
original_actual[R]
parser_error[R]

Public Class Methods

new(matcher, configuration) click to toggle source
# File lib/rspec/composable_json_matchers/be_json.rb, line 11
def initialize(matcher, configuration)
  @matcher = matcher
  @configuration = configuration
end

Public Instance Methods

description() click to toggle source
# File lib/rspec/composable_json_matchers/be_json.rb, line 30
def description
  "be JSON #{matcher.description}"
end
diffable?() click to toggle source
# File lib/rspec/composable_json_matchers/be_json.rb, line 44
def diffable?
  parser_error.nil? && matcher.diffable?
end
does_not_match?(actual) click to toggle source
# File lib/rspec/composable_json_matchers/be_json.rb, line 25
def does_not_match?(actual)
  matched = matches?(actual)
  parser_error ? false : !matched
end
expected() click to toggle source
# File lib/rspec/composable_json_matchers/be_json.rb, line 48
def expected
  matcher.expected
end
failure_message() click to toggle source
# File lib/rspec/composable_json_matchers/be_json.rb, line 34
def failure_message
  return parser_failure_message if parser_failure_message
  "expected #{original_actual} to be JSON #{matcher.description}"
end
failure_message_when_negated() click to toggle source
# File lib/rspec/composable_json_matchers/be_json.rb, line 39
def failure_message_when_negated
  return parser_failure_message if parser_failure_message
  "expected #{original_actual} not to be JSON #{matcher.description}"
end
matches?(actual) click to toggle source
# File lib/rspec/composable_json_matchers/be_json.rb, line 16
def matches?(actual)
  @original_actual = actual
  @decoded_actual = parse(original_actual)
  matcher.matches?(decoded_actual)
rescue JSON::ParserError => error
  @parser_error = error
  false
end

Private Instance Methods

parse(json) click to toggle source
# File lib/rspec/composable_json_matchers/be_json.rb, line 56
def parse(json)
  require 'json'
  JSON.parse(json, configuration.parser_options)
end
parser_failure_message() click to toggle source
# File lib/rspec/composable_json_matchers/be_json.rb, line 61
def parser_failure_message
  return nil unless parser_error
  "cannot parse #{original_actual.inspect} as JSON: #{parser_error.message}"
end