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