rspec-json_expectations 1.1.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3da6a45ac2d2224520ac476bc2129bd36f7c1e22
4
- data.tar.gz: ac809ece983d1a0473d770bc7d9c7f5cf20d5275
3
+ metadata.gz: b7be8f6d84a11ad85c20dfdb8a792db48587ed6e
4
+ data.tar.gz: fce85bc76ad20f75eeb897eae740841e2ffd9fec
5
5
  SHA512:
6
- metadata.gz: f57addf1c6dda782c53e361b480d4bec2bb93b56e92e385256c76d5c356f5ecfb0551639e197b72a34fb630fc5a4754efaf1defcd30421fbe76c03edd8115bb2
7
- data.tar.gz: c2555e105a6e9c01d80b5acf776017a86e409b8d79e28ec925efdae20bf708735fb67b4055582d92ffaba10b34313d9547d532eb0ea5db93f313cc840459eed9
6
+ metadata.gz: e06b381b60dc36b9153f80bc8840c8d60d332cc4d03025155b2966408475719d9ebbdfea1b59207f662730a5bf36adb7df9f6a00ff82997df544900ad298cb42
7
+ data.tar.gz: 14f572322abeeb992f142360504a659984d351d1837f4e94b033546b2119a2a294e69976ad33952f38e196f6617f4769c8a5f7d02376dd4f041bbaa04e21b449
@@ -8,6 +8,7 @@ Feature: include_json matcher with hash
8
8
  """ruby
9
9
  require "rspec/json_expectations"
10
10
  """
11
+
11
12
  And a local "SIMPLE_HASH" with:
12
13
  """ruby
13
14
  {
@@ -16,6 +17,7 @@ Feature: include_json matcher with hash
16
17
  name: "John"
17
18
  }
18
19
  """
20
+
19
21
  And a local "BIG_HASH" with:
20
22
  """ruby
21
23
  {
@@ -28,6 +30,16 @@ Feature: include_json matcher with hash
28
30
  }
29
31
  """
30
32
 
33
+ And a local "HASH_WITH_SIMPLE_TYPES" with:
34
+ """ruby
35
+ {
36
+ phone: nil,
37
+ name: "A guy without phone",
38
+ without_phone: true,
39
+ communicative: false
40
+ }
41
+ """
42
+
31
43
  Scenario: Expecting json string to include simple json
32
44
  Given a file "spec/simple_example_spec.rb" with:
33
45
  """ruby
@@ -112,4 +124,27 @@ Feature: include_json matcher with hash
112
124
  1 example, 0 failures
113
125
  """
114
126
 
127
+ Scenario: Expecting json response to contain null(s), booleans, etc
128
+ Given a file "spec/nil_values_spec.rb" with:
129
+ """ruby
130
+ require "spec_helper"
131
+
132
+ RSpec.describe "A json response" do
133
+ subject { %{HASH_WITH_SIMPLE_TYPES} }
134
+
135
+ it "has no phone" do
136
+ expect(subject).to include_json(
137
+ name: "A guy without phone",
138
+ phone: nil,
139
+ communicative: false,
140
+ without_phone: true
141
+ )
142
+ end
143
+ end
144
+ """
145
+ When I run "rspec spec/nil_values_spec.rb"
146
+ Then I see:
147
+ """
148
+ 1 example, 0 failures
149
+ """
115
150
 
@@ -7,7 +7,8 @@ module RSpec
7
7
  # match. Errors are accumulated in errors hash for each
8
8
  # json atom paths.
9
9
  class JsonTraverser
10
- SUPPORTED_VALUES = [Hash, String, Numeric, Regexp, Array]
10
+ HANDLED_BY_SIMPLE_VALUE_HANDLER = [String, Numeric, FalseClass, TrueClass, NilClass]
11
+ SUPPORTED_VALUES = [Hash, Regexp, Array] + HANDLED_BY_SIMPLE_VALUE_HANDLER
11
12
 
12
13
  class << self
13
14
  def traverse(errors, expected, actual, negate=false, prefix=[])
@@ -48,7 +49,7 @@ module RSpec
48
49
  end
49
50
 
50
51
  def handle_value(errors, expected, actual, negate=false, prefix=[])
51
- return nil unless expected.is_a?(String) || expected.is_a?(Numeric)
52
+ return nil unless handled_by_simple_value?(expected)
52
53
 
53
54
  if conditionally_negate(actual == expected, negate)
54
55
  true
@@ -61,6 +62,10 @@ module RSpec
61
62
  end
62
63
  end
63
64
 
65
+ def handled_by_simple_value?(expected)
66
+ HANDLED_BY_SIMPLE_VALUE_HANDLER.any? { |type| type === expected }
67
+ end
68
+
64
69
  def handle_regex(errors, expected, actual, negate=false, prefix=[])
65
70
  return nil unless expected.is_a?(Regexp)
66
71
 
@@ -1,5 +1,5 @@
1
1
  module RSpec
2
2
  module JsonExpectations
3
- VERSION = "1.1.0"
3
+ VERSION = "1.1.1"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-json_expectations
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexey Fedorov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-13 00:00:00.000000000 Z
11
+ date: 2015-01-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -107,4 +107,3 @@ test_files:
107
107
  - features/rspec/json_expectations/simple_hash_match.feature
108
108
  - features/step_definitions/steps.rb
109
109
  - features/support/env.rb
110
- has_rdoc: