assert_json 0.2.2 → 0.2.3
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 +4 -4
- data/CHANGELOG.md +3 -2
- data/lib/assert_json/assert_json.rb +23 -11
- data/lib/assert_json/version.rb +1 -1
- data/test/assert_json_new_dsl_test.rb +62 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 84984fa4a3256eeeb0fd478682aaac73edf8ce6e
|
4
|
+
data.tar.gz: 735eb857f7c81ee55bfe0d24bc7283713768396c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 065d1b029be8512f5f6676e91b4596aa2e41f1ff220d8d35c9b2e45e11ed0ddfe3b61988c7afeebf8484ff3f12eabb9b579d895fdd75cda8063762810f178597
|
7
|
+
data.tar.gz: ee97759d3a65474fce2ce15f43cd3bf2b10025437136167c07d638a0a18b319e47095559825561089dc42a8e09a02f1ec0b1ff606d569593786414963d8bbf54
|
data/CHANGELOG.md
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
-
## 0.3
|
3
|
+
## 0.2.3
|
4
4
|
|
5
|
-
*
|
5
|
+
* bugfix for itemised nested arrays (see [issue 7](https://github.com/alto/assert_json/issues/7))
|
6
6
|
|
7
7
|
## 0.2.2
|
8
8
|
|
9
|
+
* allow Ruby symbols as keys and values (thanks to [@pgaertig](https://github.com/pgaertig), see [issue 4](https://github.com/alto/assert_json/issues/4))
|
9
10
|
* allowing to validate real numbers (thanks to [@plu](https://github.com/plu), see [issue 6](https://github.com/alto/assert_json/pull/6))
|
10
11
|
|
11
12
|
## 0.2.1
|
@@ -27,21 +27,25 @@ module AssertJson
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def item(index, &block)
|
30
|
-
|
31
|
-
|
30
|
+
decoded_json_in_scope = @decoded_json
|
31
|
+
@decoded_json = @decoded_json[index]
|
32
|
+
begin
|
33
|
+
yield if block_given?
|
34
|
+
ensure
|
35
|
+
@decoded_json = decoded_json_in_scope
|
36
|
+
end
|
32
37
|
end
|
33
38
|
|
34
39
|
def element(*args, &block)
|
35
40
|
arg = args.shift
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
@decoded_json.shift
|
41
|
-
end
|
41
|
+
|
42
|
+
token = case @decoded_json
|
43
|
+
when Array
|
44
|
+
@decoded_json.shift
|
42
45
|
else
|
43
46
|
@decoded_json
|
44
47
|
end
|
48
|
+
|
45
49
|
case token
|
46
50
|
when Hash
|
47
51
|
arg = arg.to_s
|
@@ -59,7 +63,9 @@ module AssertJson
|
|
59
63
|
end
|
60
64
|
end
|
61
65
|
when Array
|
62
|
-
|
66
|
+
if !block_given? && token != arg
|
67
|
+
raise_error("element #{arg} not found")
|
68
|
+
end
|
63
69
|
when String
|
64
70
|
case arg
|
65
71
|
when Regexp
|
@@ -75,10 +81,16 @@ module AssertJson
|
|
75
81
|
|
76
82
|
if block_given?
|
77
83
|
begin
|
78
|
-
|
84
|
+
decoded_json_in_scope = @decoded_json
|
85
|
+
@decoded_json = case token
|
86
|
+
when Hash
|
87
|
+
token[arg]
|
88
|
+
else
|
89
|
+
token
|
90
|
+
end
|
79
91
|
yield
|
80
92
|
ensure
|
81
|
-
@decoded_json =
|
93
|
+
@decoded_json = decoded_json_in_scope
|
82
94
|
end
|
83
95
|
end
|
84
96
|
|
data/lib/assert_json/version.rb
CHANGED
@@ -121,6 +121,43 @@ class AssertJsonNewDslTest < Minitest::Test
|
|
121
121
|
end
|
122
122
|
end
|
123
123
|
|
124
|
+
def test_itemised_nested_array
|
125
|
+
json = '[["deep","another_depp"],["second_deep"]]'
|
126
|
+
assert_json json do
|
127
|
+
item 0 do
|
128
|
+
item 0 do
|
129
|
+
has 'deep'
|
130
|
+
end
|
131
|
+
item 1 do
|
132
|
+
has 'another_depp'
|
133
|
+
end
|
134
|
+
end
|
135
|
+
item 1 do
|
136
|
+
has 'second_deep'
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
def test_itemised_nested_array_crosscheck
|
141
|
+
json = '[["deep","another_depp"],["second_deep"]]'
|
142
|
+
assert_json json do
|
143
|
+
item 0 do
|
144
|
+
item 0 do
|
145
|
+
has 'deep'
|
146
|
+
end
|
147
|
+
item 1 do
|
148
|
+
assert_raises(MiniTest::Assertion) do
|
149
|
+
has 'wrong_item_value'
|
150
|
+
end
|
151
|
+
end
|
152
|
+
end
|
153
|
+
item 1 do
|
154
|
+
assert_raises(MiniTest::Assertion) do
|
155
|
+
has 'unknown_item_value'
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
124
161
|
def test_hash_with_value_array
|
125
162
|
assert_json '{"key":["value1","value2"]}' do
|
126
163
|
has 'key', ['value1', 'value2']
|
@@ -412,4 +449,29 @@ class AssertJsonNewDslTest < Minitest::Test
|
|
412
449
|
end
|
413
450
|
end
|
414
451
|
|
452
|
+
# for issue #/
|
453
|
+
def test_complex_example
|
454
|
+
json = '{"count":2,"total_count":3,"results":[{"id":14,"tags":["tag1","tag2"],"created_at":"2014-10-14T00:50:39Z","updated_at":"2014-10-14T00:51:39Z"},{"id":15,"tags":["tag3","tag4"],"created_at":"2014-10-15T00:50:39Z","updated_at":"2014-10-15T00:51:39Z"}]}'
|
455
|
+
|
456
|
+
assert_json json do
|
457
|
+
has 'count', 2
|
458
|
+
has 'total_count', 3
|
459
|
+
has 'results' do
|
460
|
+
item 0 do
|
461
|
+
has 'id', 14
|
462
|
+
has 'tags' do
|
463
|
+
item 0 do
|
464
|
+
has 'tag1'
|
465
|
+
end
|
466
|
+
item 1 do
|
467
|
+
has 'tag2'
|
468
|
+
end
|
469
|
+
end
|
470
|
+
has 'created_at', '2014-10-14T00:50:39Z'
|
471
|
+
has 'updated_at', '2014-10-14T00:51:39Z'
|
472
|
+
end
|
473
|
+
end
|
474
|
+
end
|
475
|
+
end
|
476
|
+
|
415
477
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: assert_json
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thorsten Böttger
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-10-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|