easy_json_matcher 0.2.2 → 0.3.0
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/lib/easy_json_matcher/array_content_validator.rb +22 -0
- data/lib/easy_json_matcher/array_generator.rb +41 -0
- data/lib/easy_json_matcher/array_validator.rb +11 -76
- data/lib/easy_json_matcher/attribute_generator.rb +37 -0
- data/lib/easy_json_matcher/attribute_type_methods.rb +29 -0
- data/lib/easy_json_matcher/coercion_error.rb +10 -0
- data/lib/easy_json_matcher/content_wrapper.rb +2 -4
- data/lib/easy_json_matcher/{validation_error.rb → easy_json_matcher_error.rb} +2 -1
- data/lib/easy_json_matcher/json_coercer.rb +34 -0
- data/lib/easy_json_matcher/node.rb +10 -114
- data/lib/easy_json_matcher/node_generator.rb +58 -0
- data/lib/easy_json_matcher/schema_generator.rb +47 -71
- data/lib/easy_json_matcher/schema_library.rb +8 -11
- data/lib/easy_json_matcher/unknown_validation_step_error.rb +10 -0
- data/lib/easy_json_matcher/validation_chain_factory.rb +48 -0
- data/lib/easy_json_matcher/validation_rules.rb +59 -0
- data/lib/easy_json_matcher/validation_step.rb +36 -0
- data/lib/easy_json_matcher/validator.rb +12 -87
- data/lib/easy_json_matcher/validator_set.rb +31 -0
- data/lib/easy_json_matcher/version.rb +1 -1
- data/lib/easy_json_matcher.rb +6 -2
- data/lib/easy_json_matcher.rb~ +5 -0
- data/test/array_content_validator_test.rb +17 -0
- data/test/custom_validations_test.rb +17 -17
- data/test/global_validation_options_test.rb +39 -44
- data/test/json_coercer_test.rb +25 -0
- data/test/managing_schemas_test.rb +53 -52
- data/test/node_test.rb +28 -0
- data/test/primitives_boolean_test.rb +27 -0
- data/test/primitives_date_test.rb +28 -0
- data/test/primitives_number_test.rb +27 -0
- data/test/primitives_object_test.rb +27 -0
- data/test/primitives_string_test.rb +27 -0
- data/test/primtives_value_test.rb +23 -0
- data/test/required_validation_test.rb +7 -7
- data/test/schema_generator_test.rb +23 -0
- data/test/strict_mode_test.rb +25 -54
- data/test/test_helper.rb +8 -6
- data/test/validating_arrays_test.rb +40 -132
- data/test/validation_chain_factory_test.rb +45 -0
- data/test/validation_chain_test_helper.rb +13 -0
- data/test/validation_step_array_test.rb +27 -0
- data/test/validation_step_boolean_test.rb +19 -0
- data/test/validation_step_date_test.rb +20 -0
- data/test/validation_step_not_required_test.rb +35 -0
- data/test/validation_step_number_test.rb +23 -0
- data/test/validation_step_object_test.rb +20 -0
- data/test/validation_step_required_test.rb +19 -0
- data/test/validation_step_string_test.rb +20 -0
- data/test/validation_step_test.rb +55 -0
- data/test/validation_step_value_test.rb +15 -0
- data/test/validator_set_test.rb +49 -0
- data/test/validator_test.rb +44 -0
- metadata +64 -26
- data/lib/easy_json_matcher/boolean_validator.rb +0 -14
- data/lib/easy_json_matcher/date_validator.rb +0 -44
- data/lib/easy_json_matcher/node.rb~ +0 -121
- data/lib/easy_json_matcher/number_validator.rb +0 -22
- data/lib/easy_json_matcher/object_validator.rb +0 -12
- data/lib/easy_json_matcher/schema_generator.rb~ +0 -104
- data/lib/easy_json_matcher/string_validator.rb +0 -16
- data/lib/easy_json_matcher/validator.rb~ +0 -99
- data/lib/easy_json_matcher/validator_factory.rb +0 -76
- data/lib/easy_json_matcher/value_validator.rb +0 -10
- data/lib/easy_json_matcher/version.rb~ +0 -3
- data/test/custom_validations_test.rb~ +0 -25
- data/test/easy_json_matcher_test.rb +0 -262
- data/test/easy_json_matcher_test.rb~ +0 -262
- data/test/error_messages_test.rb +0 -148
- data/test/reset_test.rb +0 -32
- data/test/reset_test.rb~ +0 -32
@@ -1,262 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
require 'json'
|
3
|
-
|
4
|
-
# This test suite covers the basic concept of validating that a value is a
|
5
|
-
# certain type
|
6
|
-
class EasyJSONMatcherTest < ActiveSupport::TestCase
|
7
|
-
|
8
|
-
test "As a user I want to create new Schemas to match JSON objects" do
|
9
|
-
# This test represents the minimum level of implementation required to create a
|
10
|
-
# working node.
|
11
|
-
test_schema = EasyJSONMatcher::SchemaGenerator.new { |schema|
|
12
|
-
schema.contains_node(key: :data) do |node|
|
13
|
-
node.has_attribute(key: :title, opts: {type: :string})
|
14
|
-
end
|
15
|
-
}.register(as: :test)
|
16
|
-
|
17
|
-
valid_json = {
|
18
|
-
data: {
|
19
|
-
'title'=> "here's a title"
|
20
|
-
}
|
21
|
-
}.to_json
|
22
|
-
assert(test_schema.valid? valid_json)
|
23
|
-
end
|
24
|
-
|
25
|
-
# The first thing the gem ought to do is to check that the JSON candidate is actually JSON
|
26
|
-
test "As a user, if the validation candidate cannot be parsed as JSON, the schema should not be valid" do
|
27
|
-
test_schema = EasyJSONMatcher::SchemaGenerator.new {|s|
|
28
|
-
s.has_number(key: :population_of_china_1970)
|
29
|
-
}.generate_schema
|
30
|
-
|
31
|
-
invalid_json = "'population_of_china_1970' 810000000"
|
32
|
-
|
33
|
-
assert_not(test_schema.valid? invalid_json)
|
34
|
-
end
|
35
|
-
|
36
|
-
|
37
|
-
test "As a user I want to be able to validate strings" do
|
38
|
-
test_schema = EasyJSONMatcher::SchemaGenerator.new {|schema|
|
39
|
-
schema.has_string(key: :string, opts: { required: :true})
|
40
|
-
}.generate_schema
|
41
|
-
|
42
|
-
valid_json = {
|
43
|
-
string: "Mrs Mogs Hamilton"
|
44
|
-
}.to_json
|
45
|
-
|
46
|
-
assert(test_schema.valid?(valid_json), 'String was not validated')
|
47
|
-
|
48
|
-
# There isn't really a clear case for the string validator picking up if a
|
49
|
-
# value is not intended to be a string since all json values are effectively
|
50
|
-
# strings, and how is the library to know if the client meant 16 to be passed
|
51
|
-
# as a number or as a string?
|
52
|
-
# invalid_json = {
|
53
|
-
# string: 16
|
54
|
-
# }.to_json
|
55
|
-
#
|
56
|
-
# assert_not(test_schema.valid?(invalid_json), 'Number was validated as a string')
|
57
|
-
end
|
58
|
-
|
59
|
-
|
60
|
-
test "As a user I want to be able to validate numbers" do
|
61
|
-
|
62
|
-
test_schema = EasyJSONMatcher::SchemaGenerator.new {|schema|
|
63
|
-
schema.has_number(key: :number, opts: {required: :true})
|
64
|
-
}.generate_schema
|
65
|
-
|
66
|
-
valid_json = {
|
67
|
-
number: 5.55,
|
68
|
-
}.to_json
|
69
|
-
|
70
|
-
assert(test_schema.valid?(valid_json), "Number was not validated")
|
71
|
-
|
72
|
-
invalid_json = {
|
73
|
-
number: "hi"
|
74
|
-
}.to_json
|
75
|
-
assert_not(test_schema.valid?(invalid_json), "\"hi\" should not have been valid")
|
76
|
-
|
77
|
-
invalid_nil = {
|
78
|
-
number: nil
|
79
|
-
}.to_json
|
80
|
-
assert_not(test_schema.valid?(invalid_nil), "#{invalid_nil} should not have validated, or thrown an error")
|
81
|
-
end
|
82
|
-
|
83
|
-
test "As a user I want to be able to validate booleans" do
|
84
|
-
|
85
|
-
test_schema = EasyJSONMatcher::SchemaGenerator.new {|schema|
|
86
|
-
schema.has_boolean(key: :true)
|
87
|
-
schema.has_boolean(key: :false)
|
88
|
-
}.generate_schema
|
89
|
-
|
90
|
-
valid_json = {
|
91
|
-
true: true,
|
92
|
-
false: false
|
93
|
-
}.to_json
|
94
|
-
|
95
|
-
assert(test_schema.valid?(valid_json), "Boolean was not validated")
|
96
|
-
|
97
|
-
invalid_json = {
|
98
|
-
true: 1,
|
99
|
-
false: "wibble"
|
100
|
-
}.to_json
|
101
|
-
|
102
|
-
# byebug
|
103
|
-
assert_not(test_schema.valid?(invalid_json), "\"1\" and \"wibble\" are not valid boolean values")
|
104
|
-
end
|
105
|
-
|
106
|
-
test "As a user I want to be able to validate Array values" do
|
107
|
-
test_schema = EasyJSONMatcher::SchemaGenerator.new {|schema|
|
108
|
-
schema.has_attribute(key: :array, opts: {type: :array})
|
109
|
-
}.generate_schema
|
110
|
-
|
111
|
-
valid_json = {
|
112
|
-
array: []
|
113
|
-
}.to_json
|
114
|
-
|
115
|
-
assert(test_schema.valid?(valid_json), "Array was not validated")
|
116
|
-
|
117
|
-
invalid_json = {
|
118
|
-
array: 1
|
119
|
-
}.to_json
|
120
|
-
|
121
|
-
assert(!test_schema.valid?(invalid_json), "\"1\" is not a valid array value")
|
122
|
-
end
|
123
|
-
|
124
|
-
test "As a user I want to be able to validate date values" do
|
125
|
-
test_schema = EasyJSONMatcher::SchemaGenerator.new { |schema|
|
126
|
-
schema.has_date(key: :date)
|
127
|
-
}.generate_schema
|
128
|
-
|
129
|
-
valid_json = {
|
130
|
-
date: "2015-01-15"
|
131
|
-
}.to_json
|
132
|
-
|
133
|
-
assert(test_schema.valid?(valid_json), "Date was not validated")
|
134
|
-
|
135
|
-
not_a_date = 'Good Night Mr. Tom'
|
136
|
-
invalid_json = {
|
137
|
-
date: not_a_date
|
138
|
-
}.to_json
|
139
|
-
|
140
|
-
assert_not(test_schema.valid?(invalid_json), "\"#{not_a_date}\" should not have been validated as a date")
|
141
|
-
end
|
142
|
-
|
143
|
-
test "As a user I want to be able to use different types of date format" do
|
144
|
-
flunk "Implement me"
|
145
|
-
end
|
146
|
-
|
147
|
-
test "As a user I want to validate object values" do
|
148
|
-
test_schema = EasyJSONMatcher::SchemaGenerator.new { |schema|
|
149
|
-
schema.has_object(key: :object)
|
150
|
-
}.generate_schema
|
151
|
-
|
152
|
-
is_an_object = {}
|
153
|
-
|
154
|
-
valid_json = {
|
155
|
-
object: is_an_object
|
156
|
-
}.to_json
|
157
|
-
|
158
|
-
assert(test_schema.valid?(valid_json),"#{is_an_object} was not validated as an object" )
|
159
|
-
|
160
|
-
not_an_object = "Popular Music"
|
161
|
-
|
162
|
-
invalid_json = {
|
163
|
-
object: not_an_object
|
164
|
-
}.to_json
|
165
|
-
|
166
|
-
assert_not(test_schema.valid?(invalid_json), "#{not_an_object} should not have validated as an object")
|
167
|
-
end
|
168
|
-
|
169
|
-
# Refers to validation of a JSON value attribute. This one is slightly tricky
|
170
|
-
# though since attempting to access a Ruby Hash with a missing key will return
|
171
|
-
# nil. The ValueValidator (or indeed any Validator) will accept nil as a value
|
172
|
-
# when the value is not marked as required.
|
173
|
-
# ValueValidator we will be stuck because although the other Validator
|
174
|
-
# classes nil indicates a missing value, in the case of the ValueValidator null is
|
175
|
-
# a valid value and we just want to check that there is a key available.
|
176
|
-
test "As a user I want to validate json value attributes" do
|
177
|
-
test_schema = EasyJSONMatcher::SchemaGenerator.new {|schema|
|
178
|
-
schema.has_value(key: :array)
|
179
|
-
schema.has_value(key: :boolean)
|
180
|
-
schema.has_value(key: :date)
|
181
|
-
schema.has_value(key: :number)
|
182
|
-
schema.has_value(key: :object)
|
183
|
-
schema.has_value(key: :string)
|
184
|
-
schema.has_value(key: :null)
|
185
|
-
}.generate_schema
|
186
|
-
|
187
|
-
|
188
|
-
valid_json = {
|
189
|
-
array: [],
|
190
|
-
boolean: true,
|
191
|
-
date: Date.today,
|
192
|
-
number: 1.11,
|
193
|
-
object: {},
|
194
|
-
string: 'The Tenderness of Wolves',
|
195
|
-
null: nil
|
196
|
-
}.to_json
|
197
|
-
|
198
|
-
assert(test_schema.valid?(valid_json), 'Value did not validate')
|
199
|
-
|
200
|
-
# There is no 'negative' test for this validator at this stage, since
|
201
|
-
# the lack of a value does not mean the key is required. See the tests
|
202
|
-
# on required validation later on.
|
203
|
-
end
|
204
|
-
|
205
|
-
test "As a user I want to validate nested json objects" do
|
206
|
-
test_schema = EasyJSONMatcher::SchemaGenerator.new {|schema|
|
207
|
-
schema.has_attribute(key: :level_1_attribute, opts: {type: :number})
|
208
|
-
schema.contains_node(key: :level_2) do |n|
|
209
|
-
n.has_attribute(key: :level_2_attribute, opts: {type: :number})
|
210
|
-
n.contains_node(key: :level_3) do |n3|
|
211
|
-
n3.has_attribute(key: :level_3_attribute, opts: {type: :number})
|
212
|
-
end
|
213
|
-
end
|
214
|
-
}.generate_schema
|
215
|
-
|
216
|
-
valid_json = {
|
217
|
-
level_1_attribute: 1,
|
218
|
-
level_2:{
|
219
|
-
level_2_attribute: 2,
|
220
|
-
level_3:{
|
221
|
-
level_3_attribute: 3
|
222
|
-
}
|
223
|
-
}
|
224
|
-
}.to_json
|
225
|
-
|
226
|
-
assert(test_schema.valid?(valid_json), "Nested JSON was not correctly validated")
|
227
|
-
end
|
228
|
-
|
229
|
-
test "As a user, if I specify a node and the content is not a node, it should be invalid without raising an error" do
|
230
|
-
test_schema = EasyJSONMatcher::SchemaGenerator.new {|schema|
|
231
|
-
schema.has_attribute(key: :fish_name, opts: {type: :string, required: :true})
|
232
|
-
schema.contains_node(key: :scientific_name) do |n|
|
233
|
-
n.has_attribute(key: :genus, opts: {type: :string, required: :true})
|
234
|
-
n.has_attribute(key: :species, opts: {type: :string, required: :true})
|
235
|
-
end
|
236
|
-
}.generate_schema
|
237
|
-
|
238
|
-
valid_json = {
|
239
|
-
fish_name: 'Clownfish',
|
240
|
-
scientific_name: {
|
241
|
-
genus: 'Amphiprion',
|
242
|
-
species: 'ocellaris'
|
243
|
-
}
|
244
|
-
}.to_json
|
245
|
-
|
246
|
-
assert(test_schema.valid?(valid_json), "#{valid_json} should have been valid")
|
247
|
-
|
248
|
-
invalid_with_array = {
|
249
|
-
fish_name: 'Green Mandarin',
|
250
|
-
scientific_name: ['Synchiropus', 'splendidus']
|
251
|
-
}.to_json
|
252
|
-
|
253
|
-
assert_not(test_schema.valid?(invalid_with_array), "#{invalid_with_array} should not have been valid as it has an array instead of a node")
|
254
|
-
|
255
|
-
invalid_with_primitive = {
|
256
|
-
fish_name: 'Hawaiian Tang',
|
257
|
-
scientific_name: 'Zebrasoma flavescens'
|
258
|
-
}.to_json
|
259
|
-
|
260
|
-
assert_not(test_schema.valid?(invalid_with_primitive), "#{invalid_with_primitive} shoudl not have been valid as it has a primite instead of a node")
|
261
|
-
end
|
262
|
-
end
|
data/test/error_messages_test.rb
DELETED
@@ -1,148 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class ErrorMessagesTest < ActiveSupport::TestCase
|
4
|
-
|
5
|
-
test "As a user I want to know why my json was not valid" do
|
6
|
-
|
7
|
-
test_schema = EasyJSONMatcher::SchemaGenerator.new { |schema|
|
8
|
-
schema.has_string key: :oops
|
9
|
-
schema.has_value key: :ok
|
10
|
-
schema.contains_node(key: :nested_oops) do |node|
|
11
|
-
node.has_value key: :ok
|
12
|
-
node.has_string key: :bigger_oops
|
13
|
-
end
|
14
|
-
}.generate_schema
|
15
|
-
|
16
|
-
has_errors = {
|
17
|
-
oops: 1,
|
18
|
-
ok: 'ok',
|
19
|
-
nested_oops: {
|
20
|
-
ok: 'ok',
|
21
|
-
bigger_oops: 2
|
22
|
-
}
|
23
|
-
}.to_json
|
24
|
-
|
25
|
-
# The resulting error object should show an error for oops, and an error in the
|
26
|
-
# :nested_oops object for :bigger_oops. It should not show any errors for either
|
27
|
-
# of the :oks.
|
28
|
-
|
29
|
-
# Generate error messages. Better test that the thing is definitely invalid too...
|
30
|
-
assert_not(test_schema.valid? has_errors)
|
31
|
-
|
32
|
-
assert_match(/.*is not a String/, test_schema.get_errors[:oops][0])
|
33
|
-
assert_match( /.*is not a String/, test_schema.get_errors[:nested_oops][:bigger_oops][0])
|
34
|
-
end
|
35
|
-
|
36
|
-
test "As a user, given that I have specified that an array should be mapped to a key and that the actual value
|
37
|
-
is not an array, I want to know that the value is not an array" do
|
38
|
-
|
39
|
-
test_schema = EasyJSONMatcher::SchemaGenerator.new do |s|
|
40
|
-
s.contains_array(key: :arr)
|
41
|
-
end.generate_schema
|
42
|
-
|
43
|
-
wrong_type = {
|
44
|
-
arr: "This not an array"
|
45
|
-
}.to_json
|
46
|
-
|
47
|
-
#As above just check that the validator is actually behaving itself
|
48
|
-
assert_not(test_schema.valid? wrong_type)
|
49
|
-
|
50
|
-
assert_match(/.*is not an Array/, test_schema.get_errors[:arr][0])
|
51
|
-
end
|
52
|
-
|
53
|
-
test "As a user, given that I have specified that an array should contain a specific
|
54
|
-
type of value and the array contains other types of value, I want to know which
|
55
|
-
value was the wrong type and why" do
|
56
|
-
|
57
|
-
test_schema = EasyJSONMatcher::SchemaGenerator.new {|s|
|
58
|
-
s.contains_array key: :array do |a|
|
59
|
-
a.should_only_contain type: :string
|
60
|
-
end
|
61
|
-
}.generate_schema
|
62
|
-
|
63
|
-
episodes_where_sheldon_says_bazinga_in_series_2 = {
|
64
|
-
array: [1,2,3]
|
65
|
-
}.to_json
|
66
|
-
|
67
|
-
assert_not(test_schema.valid? episodes_where_sheldon_says_bazinga_in_series_2)
|
68
|
-
assert_match(/.* is not a String/, test_schema.get_errors[:array][0][0])
|
69
|
-
end
|
70
|
-
|
71
|
-
test "As a user, given that I have specified that a boolean should map to a given
|
72
|
-
key and that the actual value is not a boolean, I want to now that the
|
73
|
-
value is not a boolean" do
|
74
|
-
|
75
|
-
test_schema = EasyJSONMatcher::SchemaGenerator.new { |s|
|
76
|
-
s.has_boolean(key: :bool)
|
77
|
-
}.generate_schema
|
78
|
-
|
79
|
-
no_bool = {
|
80
|
-
bool: "false"
|
81
|
-
}.to_json
|
82
|
-
|
83
|
-
assert_not(test_schema.valid? no_bool)
|
84
|
-
|
85
|
-
assert_match(/.* is not a Boolean/, test_schema.get_errors[:bool][0])
|
86
|
-
end
|
87
|
-
|
88
|
-
test "As a user, given that I have specified that a date should map to a given key
|
89
|
-
and that the actual value is not a date, I want to be informed that the value
|
90
|
-
is not a date" do
|
91
|
-
|
92
|
-
test_schema = EasyJSONMatcher::SchemaGenerator.new {|s|
|
93
|
-
s.has_date(key: :date)
|
94
|
-
}.generate_schema
|
95
|
-
|
96
|
-
no_date = {
|
97
|
-
date: "hello world"
|
98
|
-
}.to_json
|
99
|
-
|
100
|
-
assert_not(test_schema.valid? no_date)
|
101
|
-
|
102
|
-
assert_match(/.* is not a Date/, test_schema.get_errors[:date][0])
|
103
|
-
end
|
104
|
-
|
105
|
-
test "As a user, given that I have specified that a value should be a number,
|
106
|
-
I want to be informed that the value was not a number" do
|
107
|
-
|
108
|
-
test_schema = EasyJSONMatcher::SchemaGenerator.new {|s|
|
109
|
-
s.has_number(key: :number)
|
110
|
-
}.generate_schema
|
111
|
-
|
112
|
-
no_number = {
|
113
|
-
number: 'six'
|
114
|
-
}.to_json
|
115
|
-
|
116
|
-
|
117
|
-
assert_not(test_schema.valid? no_number)
|
118
|
-
assert_match(/.* is not a Number/, test_schema.get_errors[:number][0])
|
119
|
-
end
|
120
|
-
|
121
|
-
test "As a user, given that I have specified that a value should be an object,
|
122
|
-
I want an error message to inform me if a value is not an object" do
|
123
|
-
|
124
|
-
test_schema = EasyJSONMatcher::SchemaGenerator.new {|s|
|
125
|
-
s.has_object(key: :object)
|
126
|
-
}.generate_schema
|
127
|
-
|
128
|
-
no_object = {
|
129
|
-
object: false
|
130
|
-
}.to_json
|
131
|
-
|
132
|
-
assert_not(test_schema.valid? no_object)
|
133
|
-
assert_match(/.* is not an Object/, test_schema.get_errors[:object][0])
|
134
|
-
end
|
135
|
-
|
136
|
-
test "As a user, given that I have supplied an invalid JSON object, I want an
|
137
|
-
error message to inform me that the candidate could not be parsed" do
|
138
|
-
|
139
|
-
test_schema = EasyJSONMatcher::SchemaGenerator.new {|s|
|
140
|
-
s.has_object(key: :object)
|
141
|
-
}.generate_schema
|
142
|
-
|
143
|
-
not_json = 'this is not a JSON String'
|
144
|
-
|
145
|
-
test_schema.valid? not_json
|
146
|
-
assert_match(/.* is not a valid JSON String/, test_schema.get_errors[:root][0])
|
147
|
-
end
|
148
|
-
end
|
data/test/reset_test.rb
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
class ResetTest < ActiveSupport::TestCase
|
3
|
-
|
4
|
-
test 'As a user, I want to be able to reuse a validator' do
|
5
|
-
# In other words, after a valid? has been called, the error messages need to be cleared
|
6
|
-
test_schema = EasyJSONMatcher::SchemaGenerator.new(global_opts: { strict: true }) { |sc|
|
7
|
-
sc.has_boolean key: :bool, opts: { required: true }
|
8
|
-
sc.contains_node key: :node do |n|
|
9
|
-
n.has_value key: :val
|
10
|
-
end
|
11
|
-
}.generate_schema
|
12
|
-
|
13
|
-
invalid_json = {
|
14
|
-
|
15
|
-
}.to_json
|
16
|
-
|
17
|
-
assert_not(test_schema.valid?(invalid_json))
|
18
|
-
assert_not(test_schema.get_errors[:bool][0].nil?)
|
19
|
-
|
20
|
-
test_schema.reset!
|
21
|
-
|
22
|
-
valid_json = {
|
23
|
-
bool: true
|
24
|
-
}.to_json
|
25
|
-
|
26
|
-
assert(test_schema.valid?(valid_json), test_schema.get_errors)
|
27
|
-
|
28
|
-
errors = test_schema.get_errors
|
29
|
-
assert errors[:node][:val].empty?
|
30
|
-
assert errors[:bool].empty?
|
31
|
-
end
|
32
|
-
end
|
data/test/reset_test.rb~
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
class ResetTest < ActiveSupport::TestCase
|
3
|
-
|
4
|
-
test 'As a user, I want to be able to reuse a validator' do
|
5
|
-
# In other words, after a valid? has been called, the error messages need to be cleared
|
6
|
-
test_schema = EasyJSONMatcher::SchemaGenerator.new(global_opts: { strict: true }) { |sc|
|
7
|
-
sc.has_boolean key: :bool, opts: { required: true }
|
8
|
-
sc.contains_node key: :node do |n|
|
9
|
-
n.has_value key: :val
|
10
|
-
end
|
11
|
-
}.generate_schema
|
12
|
-
|
13
|
-
invalid_json = {
|
14
|
-
|
15
|
-
}.to_json
|
16
|
-
|
17
|
-
assert_not(test_schema.valid?(invalid_json))
|
18
|
-
assert_not(test_schema.get_errors[:bool][0].nil?)
|
19
|
-
|
20
|
-
test_schema.reset!
|
21
|
-
|
22
|
-
valid_json = {
|
23
|
-
bool: true
|
24
|
-
}.to_json
|
25
|
-
|
26
|
-
assert(test_schema.valid?(valid_json))
|
27
|
-
|
28
|
-
errors = test_schema.get_errors
|
29
|
-
assert errors[:node][:val].empty?
|
30
|
-
assert errors[:bool].empty?
|
31
|
-
end
|
32
|
-
end
|