Sha256: b7e74c59920bc7b116767b0da652597dca7e415f98eb0b0ce5a7c1d466624690
Contents?: true
Size: 1.31 KB
Versions: 3
Compression:
Stored size: 1.31 KB
Contents
module JsonSpec module Matchers class IncludeJson include JsonSpec::Helpers include JsonSpec::Exclusion include JsonSpec::Messages def initialize(expected_json = nil) @expected_json = expected_json end def matches?(actual_json) raise "Expected included JSON not provided" if @expected_json.nil? 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) else false end end def at_path(path) @path = path self end def from_file(path) @expected_json = load_json(path) self end def excluding(*keys) excluded_keys.merge(keys.map(&:to_s)) self end def including(*keys) excluded_keys.subtract(keys.map(&:to_s)) self end def failure_message_for_should message_with_path("Expected included JSON") end def failure_message_for_should_not message_with_path("Expected excluded JSON") end def description message_with_path("include JSON") end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
json_spec-1.0.3 | lib/json_spec/matchers/include_json.rb |
json_spec-1.0.2 | lib/json_spec/matchers/include_json.rb |
json_spec-1.0.0 | lib/json_spec/matchers/include_json.rb |