easy_json_matcher 0.4.1 → 0.5.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.rb +1 -0
- data/lib/easy_json_matcher/array_content_validator.rb +2 -5
- data/lib/easy_json_matcher/array_validator.rb +1 -0
- data/lib/easy_json_matcher/exceptions.rb +14 -3
- data/lib/easy_json_matcher/node.rb +3 -3
- data/lib/easy_json_matcher/node_generator.rb +2 -3
- data/lib/easy_json_matcher/printer.rb +55 -0
- data/lib/easy_json_matcher/schema_library.rb +6 -12
- data/lib/easy_json_matcher/validation_chain_factory.rb +7 -8
- data/lib/easy_json_matcher/validation_rules.rb +73 -50
- data/lib/easy_json_matcher/validator_set.rb +13 -4
- data/lib/easy_json_matcher/version.rb +1 -1
- data/test/managing_schemas_test.rb +4 -5
- data/test/node_test.rb +5 -5
- data/test/printer_test.rb +21 -0
- data/test/strict_mode_test.rb +8 -0
- data/test/validation_chain_factory_test.rb +2 -2
- metadata +5 -3
- data/lib/easy_json_matcher/unknown_validation_step_error.rb +0 -10
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b4ae72ea8cf0f22e7214a77bef9d439db03eccff
|
|
4
|
+
data.tar.gz: ca161753385c81aa57e6a43418664d807b1425ae
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 73ba46ee4cb3a9333e3b5ee56f2d18dced83580c2bd90fc95cbe77d18afb89e443aa141f5eb22d5216e1cb399f2fffbbff402ffb8c01d7f412986b7de02f953c
|
|
7
|
+
data.tar.gz: 7e7c1f2f0fa7abcad1c6a20a27aa87119b8c1997566e6b74f9b2eec3fedf2f59ee6523c77b4747174d919ba963a08d4a4e64a8ce9a311d2287669884e3d6076f
|
data/lib/easy_json_matcher.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
module EasyJSONMatcher
|
|
2
2
|
class ArrayContentValidator
|
|
3
3
|
|
|
4
|
-
attr_reader :
|
|
4
|
+
attr_reader :verifier
|
|
5
5
|
|
|
6
6
|
def initialize(verify_with:)
|
|
7
7
|
@verifier = verify_with
|
|
@@ -10,13 +10,10 @@ module EasyJSONMatcher
|
|
|
10
10
|
def call(value:)
|
|
11
11
|
errors = []
|
|
12
12
|
value.each do |val|
|
|
13
|
+
# TODO: You could remove the duplication of array content errors here
|
|
13
14
|
errors += verifier.call(value: val)
|
|
14
15
|
end
|
|
15
16
|
errors
|
|
16
17
|
end
|
|
17
|
-
|
|
18
|
-
def >> (step)
|
|
19
|
-
@next_step = step
|
|
20
|
-
end
|
|
21
18
|
end
|
|
22
19
|
end
|
|
@@ -2,7 +2,18 @@ module EasyJSONMatcher
|
|
|
2
2
|
# Override of Ruby error for namespacing
|
|
3
3
|
class Error < RuntimeError; end
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
|
|
6
|
+
class UnknownValidationStepError < Error
|
|
7
|
+
|
|
8
|
+
def error_message (type)
|
|
9
|
+
"No validator available for #{type},
|
|
10
|
+
you have either asked to validate a type that is not supported
|
|
11
|
+
or a schema that has not been defined. If it is the
|
|
12
|
+
former, consider using a custom validator"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def initialize(type)
|
|
16
|
+
super error_message(type)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
8
19
|
end
|
|
@@ -2,13 +2,13 @@ module EasyJSONMatcher
|
|
|
2
2
|
class Node
|
|
3
3
|
include AutoInject.kwargs[:node_content_validator, :chain_factory]
|
|
4
4
|
|
|
5
|
-
attr_reader :node_validator
|
|
5
|
+
attr_reader :node_validator
|
|
6
6
|
|
|
7
7
|
def initialize(opts: [], strict: false, validators:, **args)
|
|
8
8
|
super(**args)
|
|
9
9
|
@node_validator = chain_factory.get_chain(steps: opts + [:object])
|
|
10
|
-
|
|
11
|
-
@node_validator.concat(
|
|
10
|
+
validators = node_content_validator.new(validators: validators, strict: strict)
|
|
11
|
+
@node_validator.concat(validators)
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
def call(value:)
|
|
@@ -12,7 +12,6 @@ module EasyJSONMatcher
|
|
|
12
12
|
@validators = {}
|
|
13
13
|
@node_opts = extract_opts(local: opts, global: global_opts)
|
|
14
14
|
@global_opts = global_opts
|
|
15
|
-
yield self if block_given?
|
|
16
15
|
end
|
|
17
16
|
|
|
18
17
|
def generate_node
|
|
@@ -26,8 +25,8 @@ module EasyJSONMatcher
|
|
|
26
25
|
end
|
|
27
26
|
|
|
28
27
|
def contains_node(key:, opts: [], &block)
|
|
29
|
-
|
|
30
|
-
generator
|
|
28
|
+
generator = self.class.new(opts: opts, global_opts: global_opts)
|
|
29
|
+
generator.instance_eval &block if block_given?
|
|
31
30
|
validators[key] = generator.generate_node
|
|
32
31
|
end
|
|
33
32
|
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
module EasyJSONMatcher
|
|
2
|
+
|
|
3
|
+
# Class which is used to convert a node to a human-readable format for
|
|
4
|
+
# inspection purposes.
|
|
5
|
+
|
|
6
|
+
class Printer
|
|
7
|
+
|
|
8
|
+
attr_reader :n
|
|
9
|
+
|
|
10
|
+
def initialize(node:)
|
|
11
|
+
@n = node
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def inspect
|
|
15
|
+
root_flag = "root: "
|
|
16
|
+
root_flag + pretty_print(n.validation_chain, root_flag.length)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def pretty_print(node, n)
|
|
20
|
+
depth = grow_s(n)
|
|
21
|
+
d = n + 1
|
|
22
|
+
case node
|
|
23
|
+
when Node
|
|
24
|
+
pretty_print node.node_validator, n
|
|
25
|
+
when Validator
|
|
26
|
+
pretty_print node.validation_chain, n
|
|
27
|
+
when ArrayValidator
|
|
28
|
+
pretty_print node.verifier, n
|
|
29
|
+
when ArrayContentValidator
|
|
30
|
+
pretty_print node.verifier, n
|
|
31
|
+
when ValidationRule
|
|
32
|
+
node.type.to_s
|
|
33
|
+
when ValidationStep
|
|
34
|
+
head = pretty_print node.verifier, d
|
|
35
|
+
tail = pretty_print node.next_step, n unless node.is_tail?
|
|
36
|
+
tail_string = tail ? "\n#{depth}#{tail}" : ""
|
|
37
|
+
"#{head} | #{tail_string}"
|
|
38
|
+
when ValidatorSet
|
|
39
|
+
parts = node.validators.each_with_object([]) do |k_v, out|
|
|
40
|
+
key_padding = d + k_v[0].length + 1
|
|
41
|
+
out << "#{k_v[0]}: #{pretty_print k_v[1], key_padding}\n"
|
|
42
|
+
end
|
|
43
|
+
parts.join(depth)
|
|
44
|
+
else
|
|
45
|
+
throw Error.new(node.class.to_s)
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def grow_s(n)
|
|
50
|
+
buffer = ""
|
|
51
|
+
n.times { buffer << " " }
|
|
52
|
+
buffer
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -21,20 +21,14 @@ module EasyJSONMatcher
|
|
|
21
21
|
|
|
22
22
|
# TODO: error message should read "called #{name}, not with #{name}"
|
|
23
23
|
def get_schema(name:, opts: {})
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
lambda do |value|
|
|
28
|
-
SCHEMAS[name]&.call(value: value) or raise MissingSchemaException.new(schema_name: name)
|
|
29
|
-
end
|
|
30
|
-
end
|
|
24
|
+
-> (value:) {
|
|
25
|
+
SCHEMAS[name]&.call(value: value) or raise UnknownValidationStepError.new(name)
|
|
26
|
+
}
|
|
31
27
|
end
|
|
32
28
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
def use_schema(name:, wrap_with: Validator)
|
|
36
|
-
wrap_with.new validate_with: get_schema(name: name)
|
|
37
|
-
end
|
|
29
|
+
def use_schema(name:, wrap_with: Validator)
|
|
30
|
+
wrap_with.new validate_with: get_schema(name: name)
|
|
38
31
|
end
|
|
39
32
|
end
|
|
40
33
|
end
|
|
34
|
+
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
require "easy_json_matcher/validation_step"
|
|
2
|
-
require "easy_json_matcher/unknown_validation_step_error"
|
|
3
2
|
require "easy_json_matcher/exceptions"
|
|
4
3
|
|
|
5
4
|
module EasyJSONMatcher
|
|
@@ -15,24 +14,24 @@ module EasyJSONMatcher
|
|
|
15
14
|
|
|
16
15
|
def assemble_chain(head:, steps:, step_type:)
|
|
17
16
|
steps.inject(head) do |last_link, step|
|
|
18
|
-
last_link >> get_step_for(validating: step,
|
|
17
|
+
last_link >> get_step_for(validating: step, uses: step_type)
|
|
19
18
|
end
|
|
20
19
|
end
|
|
21
20
|
|
|
22
21
|
def create_head_for(steps:, step_type:)
|
|
23
|
-
is_required = steps.
|
|
24
|
-
get_step_for validating: is_required ? :required : :not_required,
|
|
22
|
+
is_required = steps.delete(:required)
|
|
23
|
+
get_step_for validating: is_required ? :required : :not_required, uses: step_type
|
|
25
24
|
end
|
|
26
25
|
|
|
27
|
-
def get_step_for(validating:,
|
|
26
|
+
def get_step_for(validating:, uses: ValidationStep)
|
|
28
27
|
if validating.respond_to? :call
|
|
29
|
-
|
|
28
|
+
uses.new verify_with: validating
|
|
30
29
|
elsif verifier = standard_validator(with: validating)
|
|
31
|
-
|
|
30
|
+
uses.new verify_with: verifier
|
|
32
31
|
elsif schema = SchemaLibrary.get_schema(name: validating)
|
|
33
32
|
schema
|
|
34
33
|
else
|
|
35
|
-
#
|
|
34
|
+
#This is just here as a catch-all. The prior step should always succeed.
|
|
36
35
|
raise UnknownValidationStepError.new(type: validating)
|
|
37
36
|
end
|
|
38
37
|
end
|
|
@@ -1,58 +1,81 @@
|
|
|
1
1
|
module EasyJSONMatcher
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
string: -> (value, errors) {
|
|
11
|
-
unless value.is_a? String
|
|
12
|
-
errors << "#{value} is not a String"
|
|
13
|
-
return false
|
|
14
|
-
end
|
|
15
|
-
},
|
|
16
|
-
number: -> (value, errors){
|
|
17
|
-
error_message = "#{value} is not a Number"
|
|
18
|
-
begin
|
|
19
|
-
Kernel::Float(value)
|
|
20
|
-
rescue ArgumentError, TypeError
|
|
21
|
-
errors << error_message
|
|
22
|
-
false
|
|
23
|
-
end
|
|
24
|
-
},
|
|
25
|
-
date: ->(value, errors){
|
|
26
|
-
require "date"
|
|
27
|
-
error_message = "#{value} is not a valid SQL date"
|
|
28
|
-
begin
|
|
29
|
-
Date.strptime(value,"%Y-%m-%d")
|
|
30
|
-
rescue ArgumentError, TypeError
|
|
31
|
-
errors << error_message
|
|
32
|
-
end
|
|
33
|
-
},
|
|
34
|
-
boolean: ->(value, errors){
|
|
35
|
-
clazz = value.class
|
|
36
|
-
unless [ TrueClass, FalseClass].include? clazz
|
|
37
|
-
errors << "#{value} is not a Boolean"
|
|
38
|
-
false
|
|
3
|
+
class ValidationRule
|
|
4
|
+
|
|
5
|
+
attr_reader :rule, :type
|
|
6
|
+
|
|
7
|
+
def initialize(type, rule)
|
|
8
|
+
@type = type
|
|
9
|
+
@rule = rule
|
|
39
10
|
end
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
errors << "Value was not an array"
|
|
44
|
-
false
|
|
11
|
+
|
|
12
|
+
def call(value, errors)
|
|
13
|
+
rule.call(value, errors)
|
|
45
14
|
end
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
VALIDATION_RULES = {
|
|
19
|
+
object: ValidationRule.new(:object, -> (value, errors) {
|
|
20
|
+
unless value.is_a? Hash
|
|
21
|
+
errors << "#{value} is not an Object"
|
|
22
|
+
return false
|
|
23
|
+
end
|
|
24
|
+
}),
|
|
25
|
+
|
|
26
|
+
string: ValidationRule.new(:string, -> (value, errors) {
|
|
27
|
+
unless value.is_a? String
|
|
28
|
+
errors << "#{value} is not a String"
|
|
29
|
+
return false
|
|
30
|
+
end
|
|
31
|
+
}),
|
|
32
|
+
|
|
33
|
+
number: ValidationRule.new(:number, -> (value, errors){
|
|
34
|
+
error_message = "#{value} is not a Number"
|
|
35
|
+
begin
|
|
36
|
+
Kernel::Float(value)
|
|
37
|
+
rescue ArgumentError, TypeError
|
|
38
|
+
errors << error_message
|
|
39
|
+
false
|
|
40
|
+
end
|
|
41
|
+
}),
|
|
42
|
+
|
|
43
|
+
date: ValidationRule.new(:date, ->(value, errors){
|
|
44
|
+
require "date"
|
|
45
|
+
error_message = "#{value} is not a valid SQL date"
|
|
46
|
+
begin
|
|
47
|
+
Date.strptime(value,"%Y-%m-%d")
|
|
48
|
+
rescue ArgumentError, TypeError
|
|
49
|
+
errors << error_message
|
|
50
|
+
end
|
|
51
|
+
}),
|
|
52
|
+
|
|
53
|
+
boolean: ValidationRule.new(:boolean, ->(value, errors){
|
|
54
|
+
clazz = value.class
|
|
55
|
+
unless [ TrueClass, FalseClass].include? clazz
|
|
56
|
+
errors << "#{value} is not a Boolean"
|
|
57
|
+
false
|
|
58
|
+
end
|
|
59
|
+
}),
|
|
60
|
+
|
|
61
|
+
array: ValidationRule.new(:array, ->(value, errors){
|
|
62
|
+
unless value.is_a? Array
|
|
63
|
+
errors << "Value was not an array"
|
|
64
|
+
false
|
|
65
|
+
end
|
|
66
|
+
}),
|
|
67
|
+
|
|
68
|
+
value: ValidationRule.new(:value, ->(value, errors){
|
|
69
|
+
# This is a bit of a toughie since value can be any value, including nil
|
|
70
|
+
}),
|
|
71
|
+
|
|
72
|
+
not_required: ValidationRule.new(:not_required, ->(value, errors){
|
|
73
|
+
false if value.nil?
|
|
74
|
+
}),
|
|
75
|
+
|
|
76
|
+
required: ValidationRule.new(:required, ->(value, errors){
|
|
54
77
|
errors << "no value found" and return false if value.nil?
|
|
55
|
-
|
|
78
|
+
})
|
|
56
79
|
}
|
|
57
80
|
end
|
|
58
81
|
|
|
@@ -13,20 +13,29 @@ module EasyJSONMatcher
|
|
|
13
13
|
def call(value:)
|
|
14
14
|
error_hash = validators.each_with_object({}) do |k_v, errors_found|
|
|
15
15
|
key = k_v[0]
|
|
16
|
-
val = value[key]
|
|
16
|
+
val = value[key.to_s]
|
|
17
17
|
validator = k_v[1]
|
|
18
18
|
results = validator.call(value: val)
|
|
19
19
|
errors_found[key] = results unless results.empty?
|
|
20
20
|
end
|
|
21
21
|
validate_strict_keyset(keys: validators.keys, candidates: value.keys, errors: error_hash) if strict
|
|
22
|
-
|
|
23
|
-
errors << error_hash unless error_hash.empty?
|
|
24
|
-
errors
|
|
22
|
+
if error_hash.empty? then [] else [error_hash] end
|
|
25
23
|
end
|
|
26
24
|
|
|
27
25
|
def validate_strict_keyset(keys:, errors:, candidates:)
|
|
26
|
+
missing_keys(keys: keys, errors: errors, candidates: candidates)
|
|
27
|
+
unexpected_keys(keys: keys, errors: errors, candidates: candidates)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def missing_keys(keys:, errors:, candidates:)
|
|
31
|
+
missing = keys - candidates
|
|
32
|
+
errors[:missing_keys] = "Missing keys: #{missing}" unless missing.empty?
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def unexpected_keys(keys:, errors:, candidates:)
|
|
28
36
|
rogue_keys = candidates - keys
|
|
29
37
|
errors[:unexpected_keys] = "Unexpected keys: #{rogue_keys}" unless rogue_keys.empty?
|
|
30
38
|
end
|
|
39
|
+
|
|
31
40
|
end
|
|
32
41
|
end
|
|
@@ -10,6 +10,7 @@ module EasyJSONMatcher
|
|
|
10
10
|
has_attribute(key: "name", opts: [ :string, :required ])
|
|
11
11
|
}
|
|
12
12
|
sc.register(as: @name)
|
|
13
|
+
byebug
|
|
13
14
|
end
|
|
14
15
|
|
|
15
16
|
test "As a user I want to be able to register a Schema so I can reuse it later" do
|
|
@@ -42,9 +43,9 @@ module EasyJSONMatcher
|
|
|
42
43
|
assert(schema.valid?(candidate: candidate), "test_schema did not validate correctly")
|
|
43
44
|
end
|
|
44
45
|
|
|
45
|
-
test "SchemaLibrary should thrown a
|
|
46
|
+
test "SchemaLibrary should thrown a UnknownValidationStepError if an unregistered schema is requested" do
|
|
46
47
|
schema = SchemaLibrary.get_schema(name: "#{@name.to_s}-wibble")
|
|
47
|
-
assert_raises(
|
|
48
|
+
assert_raises(UnknownValidationStepError) do
|
|
48
49
|
schema.call(value: {}.to_json)
|
|
49
50
|
end
|
|
50
51
|
end
|
|
@@ -53,7 +54,7 @@ module EasyJSONMatcher
|
|
|
53
54
|
schema = SchemaLibrary.get_schema(name: :womble)
|
|
54
55
|
begin
|
|
55
56
|
schema.call(value: {}.to_json)
|
|
56
|
-
rescue
|
|
57
|
+
rescue UnknownValidationStepError => ex
|
|
57
58
|
assert ex.message =~ /womble/
|
|
58
59
|
end
|
|
59
60
|
end
|
|
@@ -68,8 +69,6 @@ module EasyJSONMatcher
|
|
|
68
69
|
is_present: true,
|
|
69
70
|
}
|
|
70
71
|
|
|
71
|
-
# assert_not(test_schema.valid?(invalid_json), "#{invalid_json} should not have been valid as it does not include the saved schema")
|
|
72
|
-
|
|
73
72
|
valid_json = invalid_json.dup
|
|
74
73
|
valid_json.store(@name, {name: "Achilles Tang"})
|
|
75
74
|
valid_json = valid_json.to_json
|
data/test/node_test.rb
CHANGED
|
@@ -12,14 +12,14 @@ module EasyJSONMatcher
|
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
it "should send call to its own validator" do
|
|
15
|
-
test_value = { a
|
|
16
|
-
validators = (
|
|
15
|
+
test_value = { "a" => 1, "b" => 2, "c" => 3 }
|
|
16
|
+
validators = ("a".."c").each_with_object({}) do |n, h|
|
|
17
17
|
h[n] = ValidationChainFactory.get_chain(steps: [:string])
|
|
18
18
|
end
|
|
19
19
|
node = Node.new(opts: [:required], validators: validators)
|
|
20
|
-
expected = [{a
|
|
21
|
-
b
|
|
22
|
-
c
|
|
20
|
+
expected = [{"a" => ["1 is not a String"],
|
|
21
|
+
"b" => ["2 is not a String"],
|
|
22
|
+
"c" => ["3 is not a String"]
|
|
23
23
|
}]
|
|
24
24
|
node.call(value: test_value).must_be :==, expected
|
|
25
25
|
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
module EasyJSONMatcher
|
|
4
|
+
describe Printer do
|
|
5
|
+
|
|
6
|
+
it "should properly print a Schema" do
|
|
7
|
+
schema = SchemaGenerator.new {
|
|
8
|
+
string key: "val"
|
|
9
|
+
contains_node key: "node" do
|
|
10
|
+
string key: "inner_key"
|
|
11
|
+
string key: "another_key"
|
|
12
|
+
contains_node key: "another node" do
|
|
13
|
+
string key: "inner_inner_key"
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
}.generate_schema
|
|
17
|
+
pr = Printer.new(node: schema)
|
|
18
|
+
puts pr.inspect
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
data/test/strict_mode_test.rb
CHANGED
|
@@ -30,5 +30,13 @@ module EasyJSONMatcher
|
|
|
30
30
|
|
|
31
31
|
subject.validate(candidate: candidate).wont_be :empty?
|
|
32
32
|
end
|
|
33
|
+
|
|
34
|
+
it "should not validate candidates missing keys" do
|
|
35
|
+
candidate = {
|
|
36
|
+
a: "a"
|
|
37
|
+
}.to_json
|
|
38
|
+
|
|
39
|
+
subject.validate(candidate: candidate).wont_be :empty?
|
|
40
|
+
end
|
|
33
41
|
end
|
|
34
42
|
end
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
require "test_helper"
|
|
2
2
|
require "easy_json_matcher/validation_chain_factory"
|
|
3
|
-
require "easy_json_matcher/unknown_validation_step_error"
|
|
4
3
|
|
|
5
4
|
module EasyJSONMatcher
|
|
6
5
|
|
|
@@ -23,7 +22,8 @@ module EasyJSONMatcher
|
|
|
23
22
|
end
|
|
24
23
|
|
|
25
24
|
it "should otherwise raise an error" do
|
|
26
|
-
skip "
|
|
25
|
+
skip "This is currently unnecessary, but ought to be considered when
|
|
26
|
+
developing future versions"
|
|
27
27
|
cannot_use = String.new
|
|
28
28
|
-> { ValidationChainFactory.get_step_for(validating: cannot_use) }.
|
|
29
29
|
must_raise UnknownValidationStepError
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: easy_json_matcher
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- WJD Hamilton
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2017-12-
|
|
11
|
+
date: 2017-12-14 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: dry-auto_inject
|
|
@@ -63,9 +63,9 @@ files:
|
|
|
63
63
|
- lib/easy_json_matcher/json_coercer.rb
|
|
64
64
|
- lib/easy_json_matcher/node.rb
|
|
65
65
|
- lib/easy_json_matcher/node_generator.rb
|
|
66
|
+
- lib/easy_json_matcher/printer.rb
|
|
66
67
|
- lib/easy_json_matcher/schema_generator.rb
|
|
67
68
|
- lib/easy_json_matcher/schema_library.rb
|
|
68
|
-
- lib/easy_json_matcher/unknown_validation_step_error.rb
|
|
69
69
|
- lib/easy_json_matcher/validation_chain_factory.rb
|
|
70
70
|
- lib/easy_json_matcher/validation_rules.rb
|
|
71
71
|
- lib/easy_json_matcher/validation_step.rb
|
|
@@ -87,6 +87,7 @@ files:
|
|
|
87
87
|
- test/primitives_object_test.rb
|
|
88
88
|
- test/primitives_string_test.rb
|
|
89
89
|
- test/primtives_value_test.rb
|
|
90
|
+
- test/printer_test.rb
|
|
90
91
|
- test/required_validation_test.rb
|
|
91
92
|
- test/schema_generator_test.rb
|
|
92
93
|
- test/shortened_names_test.rb
|
|
@@ -153,6 +154,7 @@ test_files:
|
|
|
153
154
|
- test/primitives_object_test.rb
|
|
154
155
|
- test/shortened_names_test.rb
|
|
155
156
|
- test/primitives_date_test.rb
|
|
157
|
+
- test/printer_test.rb
|
|
156
158
|
- test/global_validation_options_test.rb
|
|
157
159
|
- test/validation_step_array_test.rb
|
|
158
160
|
- test/required_validation_test.rb
|