easy_json_matcher 0.2.2 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|