collection_json_serializer 0.3.2 → 0.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 439dfa592c9b1ac966e6c86e50e2985a6ef0b884
4
- data.tar.gz: af50517d57b2d5aa271afc8d6b8e67ea44ed0c48
3
+ metadata.gz: a43d5f7a36d702aceb4fd3bdd71ff86da64e027c
4
+ data.tar.gz: 12b188b39d695b9e1edbef6cc7285b3990a7c572
5
5
  SHA512:
6
- metadata.gz: fa4f479a2761f955b16e14148eae97fdd03a0f3c916d6a9bd7efcd2032fe0971a06c084520d64d10ef417208d6de64efa480c3e5197ae605fbffb3e569d57565
7
- data.tar.gz: ced4ab1f38846231334b103d6ecf74ff07246aeeda66bb37e12fa511aaf1ba157d620e743c8e7ee153ff777cf1a32084a768a54e047f3148b3c630de54d358fb
6
+ metadata.gz: 48434f77b5c372f61c7b4919c1389fc85e10e3e834a0a8f17ae1594d77af316c2b5d4af5e1c5e2ff4201db2d4a8e5e2215e34c3bcaa0bf695c395630c28e8ef9
7
+ data.tar.gz: ad03089d4119b6e799274cba090f4d5e6909553ad12e49347b48220607ca188ef8275521ca80caf0448345580faeafe2cf12813c07d45a917168833d30cba57e
data/README.md CHANGED
@@ -30,7 +30,10 @@ As this gem user, you will be mainly writing/generating and mantaining serialize
30
30
  class UserSerializer < CollectionJson::Serializer
31
31
  href "http://example.com/users",
32
32
 
33
- template :name, email: { prompt: "My email" }
33
+ template :name
34
+ template email: { prompt: "My email" }
35
+ # This could be written in a single line, too, wrapping the hash:
36
+ # template :name, { email: { ... } }
34
37
 
35
38
  # Please note that links can only be passed as hashes
36
39
  links dashboard: { href: "http://example.com/my-dashboard" }
@@ -12,6 +12,7 @@ Gem::Specification.new do |spec|
12
12
  spec.description = %q{CollectionJson::Serializer makes it easy to serialize objects into the Collection+JSON hypermedia type.}
13
13
  spec.homepage = "https://github.com/carlesjove/collection_json_serializer"
14
14
  spec.license = "MIT"
15
+ spec.required_ruby_version = ">= 2.0"
15
16
 
16
17
  spec.files = `git ls-files -z`.split("\x0")
17
18
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
@@ -10,9 +10,11 @@ require "collection_json_serializer/items"
10
10
  require "collection_json_serializer/spec"
11
11
  require "collection_json_serializer/builder"
12
12
 
13
+ require "collection_json_serializer/validator/base"
13
14
  require "collection_json_serializer/validator"
14
- require "collection_json_serializer/validator/url"
15
- require "collection_json_serializer/validator/value"
15
+ require "collection_json_serializer/validator/items_validator"
16
+ require "collection_json_serializer/validator/types/url"
17
+ require "collection_json_serializer/validator/types/value"
16
18
 
17
19
  require "collection_json_serializer/objects/item"
18
20
  require "collection_json_serializer/objects/template"
@@ -1,24 +1,8 @@
1
1
  module CollectionJson
2
2
  class Serializer
3
- class Validator
3
+ class Validator < Validation
4
4
  include CollectionJson::Serializer::Support
5
5
 
6
- attr_accessor :errors
7
-
8
- def initialize(serializer)
9
- @serializer = serializer
10
- @errors = {}
11
- validate
12
- end
13
-
14
- def valid?
15
- !invalid?
16
- end
17
-
18
- def invalid?
19
- @errors.any?
20
- end
21
-
22
6
  private
23
7
 
24
8
  def validate
@@ -32,57 +16,8 @@ module CollectionJson
32
16
  end
33
17
 
34
18
  def validate_items
35
- validate_items_attributes if attributes?
36
- validate_items_links if links?
37
- end
38
-
39
- def validate_items_attributes
40
- @serializer.items.attributes.each do |attr|
41
- params = attr.extract_params
42
- validate_attributes_values(@serializer.resources, params)
43
- validate_attributes_properties(params) if params[:properties]
44
- end if @serializer.items? && @serializer.items.attributes?
45
- end
46
-
47
- def validate_attributes_values(resources, params)
48
- resources.each do |resource|
49
- val = extract_value_from(resource, params[:name])
50
- if value_is_invalid?(val)
51
- error_for :value, root: :attributes, path: [params[:name]]
52
- end
53
- end
54
- end
55
-
56
- def validate_attributes_properties(params)
57
- params[:properties].each do |key, value|
58
- unless definition[:items][:data].keys.include?(key.to_sym)
59
- error_for(
60
- :unknown_attribute,
61
- root: :attributes,
62
- path: [params[:name], key]
63
- )
64
- next
65
- end unless @serializer.uses?(:open_attrs)
66
-
67
- if value_is_invalid?(value)
68
- error_for :value, root: :attributes, path: [params[:name], key]
69
- end
70
- end
71
- end
72
-
73
- def validate_items_links
74
- @serializer.items.links.each do |attr|
75
- params = attr.extract_params
76
- params[:properties].keys.each do |key|
77
- unless definition[:items][:links].keys.include?(key.to_sym)
78
- error_for(
79
- :unknown_attribute,
80
- root: :items,
81
- path: [:links, params[:name], key]
82
- )
83
- end unless @serializer.uses?(:open_attrs)
84
- end
85
- end
19
+ items_validation = ItemsValidator.new(@serializer)
20
+ @errors.merge!(items_validation.errors)
86
21
  end
87
22
 
88
23
  def validate_href
@@ -199,49 +134,6 @@ module CollectionJson
199
134
  end
200
135
  end if @serializer.queries.present?
201
136
  end
202
-
203
- def value_is_invalid?(value)
204
- v = CollectionJson::Serializer::Validator::Value.new(value)
205
- v.invalid?
206
- end
207
-
208
- def url_is_invalid?(value)
209
- v = CollectionJson::Serializer::Validator::Url.new(value)
210
- v.invalid?
211
- end
212
-
213
- def error_for(kind, root: root, path: [])
214
- case kind.to_sym
215
- when :url
216
- ending = " is an invalid URL"
217
- when :value
218
- ending = " is an invalid value"
219
- when :missing_attribute
220
- ending = " is missing"
221
- when :unknown_attribute
222
- ending = " is an unknown attribute"
223
- else
224
- ending = " is an invalid value"
225
- end
226
-
227
- @errors[root] = [] unless @errors.key? root
228
- e = "#{@serializer.class} #{root}"
229
- e << ":" + path.join(":") if path.any?
230
- e << ending
231
- @errors[root] << e
232
- end
233
-
234
- def definition
235
- CollectionJson::Spec::DEFINITION
236
- end
237
-
238
- def attributes?
239
- @serializer.items? && @serializer.items.attributes?
240
- end
241
-
242
- def links?
243
- @serializer.items? && @serializer.items.links?
244
- end
245
137
  end
246
138
  end
247
139
  end
@@ -0,0 +1,69 @@
1
+ module CollectionJson
2
+ class Serializer
3
+ class Validation
4
+ attr_accessor :errors
5
+
6
+ def initialize(serializer)
7
+ @serializer = serializer
8
+ @errors = {}
9
+ validate
10
+ end
11
+
12
+ def valid?
13
+ !invalid?
14
+ end
15
+
16
+ def invalid?
17
+ @errors.any?
18
+ end
19
+
20
+ private
21
+
22
+ def validate
23
+ raise NotImplementedError, "This should be implemented by validators"
24
+ end
25
+
26
+ def definition
27
+ CollectionJson::Spec::DEFINITION
28
+ end
29
+
30
+ def value_is_invalid?(value)
31
+ v = Value.new(value)
32
+ v.invalid?
33
+ end
34
+
35
+ def url_is_invalid?(value)
36
+ v = Url.new(value)
37
+ v.invalid?
38
+ end
39
+
40
+ def href_or_error(object, root: root, path: path)
41
+ unless object.key?(:href)
42
+ error_for :missing_attribute, root: root, path: path
43
+ end
44
+ end
45
+
46
+ def error_for(kind, root: root, path: [])
47
+ case kind.to_sym
48
+ when :url
49
+ ending = " is an invalid URL"
50
+ when :value
51
+ ending = " is an invalid value"
52
+ when :missing_attribute
53
+ ending = " is missing"
54
+ when :unknown_attribute
55
+ ending = " is an unknown attribute"
56
+ else
57
+ ending = " is an invalid value"
58
+ end
59
+
60
+ @errors[root] = [] unless @errors.key? root
61
+ e = "#{@serializer.class} #{root}"
62
+ e << ":" + path.join(":") if path.any?
63
+ e << ending
64
+ @errors[root] << e
65
+ end
66
+ end
67
+ end
68
+ end
69
+
@@ -0,0 +1,100 @@
1
+ module CollectionJson
2
+ class Serializer
3
+ class Validator
4
+ class ItemsValidator < Validation
5
+ include CollectionJson::Serializer::Support
6
+
7
+ private
8
+
9
+ def validate
10
+ validate_attributes if attributes?
11
+ validate_links if links?
12
+ end
13
+
14
+ def validate_attributes
15
+ @serializer.items.attributes.each do |attr|
16
+ params = attr.extract_params
17
+ validate_attributes_values(@serializer.resources, params)
18
+ validate_attributes_properties(params) if params[:properties]
19
+ end if @serializer.items? && @serializer.items.attributes?
20
+ end
21
+
22
+ def validate_links
23
+ @serializer.items.links.each do |attr|
24
+ link = attr.extract_params
25
+
26
+ href_or_error(
27
+ link[:properties],
28
+ root: :items,
29
+ path: [link[:name]]
30
+ )
31
+
32
+ link[:properties].each do |key, value|
33
+ unless definition[:items][:links].keys.include?(key.to_sym)
34
+ error_for(
35
+ :unknown_attribute,
36
+ root: :items,
37
+ path: [:links, link[:name], key]
38
+ )
39
+ end unless @serializer.uses?(:open_attrs)
40
+
41
+ case key
42
+ when :href
43
+ if url_is_invalid?(value)
44
+ error_for(
45
+ :url,
46
+ root: :items,
47
+ path: [:links, link[:name], key]
48
+ )
49
+ end
50
+ else
51
+ if value_is_invalid?(value)
52
+ error_for(
53
+ :value,
54
+ root: :items,
55
+ path: [:links, link[:name], key]
56
+ )
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
62
+
63
+ def validate_attributes_values(resources, params)
64
+ resources.each do |resource|
65
+ val = extract_value_from(resource, params[:name])
66
+ if value_is_invalid?(val)
67
+ error_for :value, root: :attributes, path: [params[:name]]
68
+ end
69
+ end
70
+ end
71
+
72
+ def validate_attributes_properties(params)
73
+ params[:properties].each do |key, value|
74
+ unless definition[:items][:data].keys.include?(key.to_sym)
75
+ error_for(
76
+ :unknown_attribute,
77
+ root: :attributes,
78
+ path: [params[:name], key]
79
+ )
80
+ next
81
+ end unless @serializer.uses?(:open_attrs)
82
+
83
+ if value_is_invalid?(value)
84
+ error_for :value, root: :attributes, path: [params[:name], key]
85
+ end
86
+ end
87
+ end
88
+
89
+ def attributes?
90
+ @serializer.items? && @serializer.items.attributes?
91
+ end
92
+
93
+ def links?
94
+ @serializer.items? && @serializer.items.links?
95
+ end
96
+ end
97
+ end
98
+ end
99
+ end
100
+
@@ -1,12 +1,12 @@
1
1
  module CollectionJson
2
2
  class Serializer
3
- class Validator
3
+ class Validation
4
4
  class Url
5
5
  # Stolen from https://github.com/eparreno/ruby_regex/blob/master/lib/ruby_regex.rb
6
6
  VALID = /(\A\z)|(\A(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(([0-9]{1,5})?\/.*)?\z)/ix
7
7
 
8
8
  def initialize(value)
9
- @uri = value
9
+ @uri = value.to_s
10
10
  end
11
11
 
12
12
  def valid?
@@ -1,6 +1,6 @@
1
1
  module CollectionJson
2
2
  class Serializer
3
- class Validator
3
+ class Validation
4
4
  class Value
5
5
  VALID = %w(
6
6
  String
@@ -1,5 +1,5 @@
1
1
  module CollectionJson
2
2
  class Serializer
3
- VERSION = "0.3.2"
3
+ VERSION = "0.3.3"
4
4
  end
5
5
  end
@@ -57,6 +57,10 @@ module CollectionJson
57
57
  name: "email",
58
58
  value: "",
59
59
  prompt: "My email"
60
+ },
61
+ {
62
+ name: "password",
63
+ value: ""
60
64
  }
61
65
  ]
62
66
  },
@@ -138,6 +142,10 @@ module CollectionJson
138
142
  name: "email",
139
143
  value: "",
140
144
  prompt: "My email"
145
+ },
146
+ {
147
+ name: "password",
148
+ value: ""
141
149
  }
142
150
  ]
143
151
  },
@@ -23,9 +23,7 @@ module CollectionJson
23
23
  ]
24
24
  @serializer.items.links = [
25
25
  dashboard: {
26
- # TODO
27
- # This URL shouldn't validate!
28
- href: "/my-dashboard",
26
+ href: "http://example.com/my-dashboard",
29
27
  anything: "at all"
30
28
  }
31
29
  ]
@@ -69,7 +67,7 @@ module CollectionJson
69
67
  links: [
70
68
  {
71
69
  rel: "dashboard",
72
- href: "/my-dashboard",
70
+ href: "http://example.com/my-dashboard",
73
71
  name: "dashboard",
74
72
  anything: "at all",
75
73
  }
@@ -1,7 +1,12 @@
1
1
  class UserSerializer < CollectionJson::Serializer
2
2
  href "http://example.com/users"
3
- template :name, email: { prompt: "My email" }
3
+
4
+ template :name
5
+ template email: { prompt: "My email" }
6
+ template :password
7
+
4
8
  links dashboard: { href: "http://example.com/my-dashboard" }
9
+
5
10
  queries search: {
6
11
  href: "http://example.com/search",
7
12
  name: false
@@ -22,4 +22,45 @@ module TestHelper
22
22
  serializer.items.attributes = []
23
23
  serializer
24
24
  end
25
+
26
+ def values_for_test(of_kind)
27
+ case of_kind
28
+ when :invalid
29
+ return [
30
+ /regex/,
31
+ :symbol,
32
+ {},
33
+ []
34
+ ]
35
+ when :valid
36
+ return [
37
+ "string",
38
+ 1,
39
+ 1.5,
40
+ -1,
41
+ BigDecimal.new(1),
42
+ (22/7.0).to_r,
43
+ true,
44
+ false,
45
+ nil
46
+ ]
47
+ end
48
+ end
49
+
50
+ def urls_for_test(of_kind)
51
+ case of_kind
52
+ when :invalid
53
+ return %w(
54
+ /hello
55
+ http:hello
56
+ )
57
+ when :valid
58
+ return %w(
59
+ http://example.com
60
+ https://example.com
61
+ http://my.example.com
62
+ https://my.example.com/?plus=query_string
63
+ )
64
+ end
65
+ end
25
66
  end
@@ -16,7 +16,8 @@ module CollectionJson
16
16
  def test_that_a_template_can_be_build
17
17
  expected = [
18
18
  { name: "name", value: "" },
19
- { name: "email", value: "", prompt: "My email" }
19
+ { name: "email", value: "", prompt: "My email" },
20
+ { name: "password", value: "" }
20
21
  ]
21
22
 
22
23
  assert_equal expected.to_json, @template.create.to_json
@@ -9,7 +9,13 @@ module CollectionJson
9
9
  end
10
10
 
11
11
  def test_template_attributes
12
- assert_equal [:name, email: { prompt: "My email" }], @user_serializer.class.template
12
+ expected = [
13
+ :name,
14
+ { email: { prompt: "My email" } },
15
+ :password
16
+ ]
17
+
18
+ assert_equal expected, @user_serializer.class.template
13
19
  end
14
20
  end
15
21
  end
@@ -18,13 +18,6 @@ module CollectionJson
18
18
  )
19
19
  @user.account = @account
20
20
 
21
- @invalid_value_types = [
22
- /regex/,
23
- :symbol,
24
- {},
25
- []
26
- ]
27
-
28
21
  @invalid = empty_serializer_for(@user)
29
22
  end
30
23
 
@@ -79,7 +72,7 @@ module CollectionJson
79
72
  def test_that_invalid_attributes_return_values_generate_errors
80
73
  @invalid.items.attributes = [:name]
81
74
 
82
- @invalid_value_types.each do |invalidate|
75
+ values_for_test(:invalid).each do |invalidate|
83
76
  @user.name = invalidate
84
77
  assert @invalid.invalid?,
85
78
  "#{invalidate} should be invalid"
@@ -91,7 +84,7 @@ module CollectionJson
91
84
  end
92
85
 
93
86
  def test_that_invalid_attributes_properties_values_generate_errors
94
- @invalid_value_types.each do |invalidate|
87
+ values_for_test(:invalid).each do |invalidate|
95
88
  @invalid.items.attributes = [
96
89
  name: {
97
90
  prompt: invalidate
@@ -109,7 +102,7 @@ module CollectionJson
109
102
 
110
103
  # Template
111
104
  def test_that_template_values_validate
112
- @invalid_value_types.each do |invalidate|
105
+ values_for_test(:invalid).each do |invalidate|
113
106
  @invalid.class.template = [
114
107
  name: {
115
108
  prompt: invalidate,
@@ -159,7 +152,7 @@ module CollectionJson
159
152
  end
160
153
 
161
154
  def test_that_queries_values_are_validated
162
- @invalid_value_types.each do |invalidate|
155
+ values_for_test(:invalid).each do |invalidate|
163
156
  @invalid.class.queries = [
164
157
  search: {
165
158
  href: "http://example.com/",
@@ -0,0 +1,56 @@
1
+ require "minitest_helper"
2
+
3
+ module CollectionJson
4
+ class Serializer
5
+ class Validator
6
+ class ItemsValidator
7
+ class ItemsValidatorTest < MiniTest::Test
8
+ include TestHelper
9
+
10
+ def setup
11
+ @user = User.new
12
+ end
13
+
14
+ def test_that_attributes_are_validated
15
+ values_for_test(:invalid).each do |invalid|
16
+ @user.name = invalid
17
+ serializer = empty_serializer_for(@user)
18
+ serializer.items.attributes = [:name]
19
+
20
+ items_validator = ItemsValidator.new(serializer)
21
+
22
+ assert items_validator.errors.any?, "should have errors"
23
+ assert items_validator.errors.key?(:attributes),
24
+ "should have key attributes"
25
+ assert items_validator.errors[:attributes][0].
26
+ include?("attributes:name is an invalid value")
27
+ end
28
+ end
29
+
30
+ def test_that_links_are_validated
31
+ values_for_test(:invalid).each do |invalid|
32
+ serializer = empty_serializer_for(@user)
33
+ serializer.items.links = [
34
+ dashboard: {
35
+ href: "invalid url",
36
+ rel: invalid
37
+ }
38
+ ]
39
+
40
+ items_validator = ItemsValidator.new(serializer)
41
+
42
+ assert items_validator.errors.any?, "should have errors"
43
+ assert items_validator.errors.key?(:items),
44
+ "should have key items"
45
+ assert items_validator.errors[:items][0].
46
+ include?("items:links:dashboard:href is an invalid URL")
47
+ assert items_validator.errors[:items][1].
48
+ include?("items:links:dashboard:rel is an invalid value")
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
56
+
@@ -2,16 +2,21 @@ require "minitest_helper"
2
2
 
3
3
  module CollectionJson
4
4
  class Serializer
5
- class Validator
5
+ class Validation
6
6
  class Url
7
7
  class TestUrl < Minitest::Test
8
+ include TestHelper
9
+
8
10
  def test_that_urls_validate
9
- invalid = %w(
10
- /hello
11
- http:hello
12
- )
11
+ urls_for_test(:invalid).each do |url|
12
+ value = Url.new(url)
13
+ refute value.valid?
14
+ assert value.invalid?
15
+ end
16
+ end
13
17
 
14
- invalid.each do |url|
18
+ def test_that_different_data_types_generate_error
19
+ values_for_test(:invalid).each do |url|
15
20
  value = Url.new(url)
16
21
  refute value.valid?
17
22
  assert value.invalid?
@@ -0,0 +1,21 @@
1
+ require 'minitest_helper'
2
+
3
+ module CollectionJson
4
+ class Serializer
5
+ class Validation
6
+ class TestValidation < MiniTest::Test
7
+ include TestHelper
8
+
9
+ def test_that_instantiating_validation_raises_error
10
+ user = User.new(name: 'Carles Jove')
11
+ serializer = empty_serializer_for(user)
12
+
13
+ assert_raises(NotImplementedError) do
14
+ Validation.new(serializer)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+
@@ -2,36 +2,19 @@ require "minitest_helper"
2
2
 
3
3
  module CollectionJson
4
4
  class Serializer
5
- class Validator
5
+ class Validation
6
6
  class Value
7
7
  class TestValue < Minitest::Test
8
- def test_that_values_validate
9
- invalid = [
10
- /regex/,
11
- :symbol,
12
- {},
13
- []
14
- ]
15
-
16
- valid = [
17
- "string",
18
- 1,
19
- 1.5,
20
- -1,
21
- BigDecimal.new(1),
22
- (22/7.0).to_r,
23
- true,
24
- false,
25
- nil
26
- ]
8
+ include TestHelper
27
9
 
28
- invalid.each do |v|
10
+ def test_that_values_validate
11
+ values_for_test(:invalid).each do |v|
29
12
  value = Value.new(v)
30
13
  refute value.valid?, "#{v} should be invalid, but was valid"
31
14
  assert value.invalid?, "#{v} should be invalid, but was valid"
32
15
  end
33
16
 
34
- valid.each do |v|
17
+ values_for_test(:valid) do |v|
35
18
  value = Value.new(v)
36
19
  assert value.valid?, "#{v} should be valid, but was invalid"
37
20
  refute value.invalid?, "#{v} should be valid, but was invalid"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: collection_json_serializer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carles Jove i Buxeda
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-24 00:00:00.000000000 Z
11
+ date: 2015-01-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -93,8 +93,10 @@ files:
93
93
  - lib/collection_json_serializer/spec.rb
94
94
  - lib/collection_json_serializer/support.rb
95
95
  - lib/collection_json_serializer/validator.rb
96
- - lib/collection_json_serializer/validator/url.rb
97
- - lib/collection_json_serializer/validator/value.rb
96
+ - lib/collection_json_serializer/validator/base.rb
97
+ - lib/collection_json_serializer/validator/items_validator.rb
98
+ - lib/collection_json_serializer/validator/types/url.rb
99
+ - lib/collection_json_serializer/validator/types/value.rb
98
100
  - lib/collection_json_serializer/version.rb
99
101
  - test/builder/builder_test.rb
100
102
  - test/extensions/open_attrs_test.rb
@@ -123,7 +125,9 @@ files:
123
125
  - test/support/ext_test.rb
124
126
  - test/support/support_test.rb
125
127
  - test/validator/invalid_test.rb
128
+ - test/validator/items_validator_test.rb
126
129
  - test/validator/url_validator_test.rb
130
+ - test/validator/validation_test.rb
127
131
  - test/validator/validator_test.rb
128
132
  - test/validator/value_validator_test.rb
129
133
  homepage: https://github.com/carlesjove/collection_json_serializer
@@ -138,7 +142,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
138
142
  requirements:
139
143
  - - ">="
140
144
  - !ruby/object:Gem::Version
141
- version: '0'
145
+ version: '2.0'
142
146
  required_rubygems_version: !ruby/object:Gem::Requirement
143
147
  requirements:
144
148
  - - ">="
@@ -178,7 +182,9 @@ test_files:
178
182
  - test/support/ext_test.rb
179
183
  - test/support/support_test.rb
180
184
  - test/validator/invalid_test.rb
185
+ - test/validator/items_validator_test.rb
181
186
  - test/validator/url_validator_test.rb
187
+ - test/validator/validation_test.rb
182
188
  - test/validator/validator_test.rb
183
189
  - test/validator/value_validator_test.rb
184
190
  has_rdoc: