validates_serialized 0.0.7 → 0.0.8
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 +8 -8
- data/Gemfile.lock +9 -9
- data/lib/validates_serialized/validators/array_block_validator.rb +13 -12
- data/lib/validates_serialized/validators/hash_block_validator.rb +12 -2
- data/lib/validates_serialized/validators/object_block_validator.rb +12 -1
- data/lib/validates_serialized/version.rb +1 -1
- data/spec/acceptance_spec.rb +4 -4
- data/spec/new_acceptance_spec.rb +113 -0
- data/spec/validators/array_block_validator_spec.rb +52 -32
- data/spec/validators/hash_block_validator_spec.rb +16 -0
- data/spec/validators/object_block_validator_spec.rb +16 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NmQ3OTUxMDE5ODExYjA2YWI3M2YwZTk2Yzk2NmYwYWVjNmIzOWM3Yg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YWIzOWE3ODJiMWYzNGI5ODhiMDAzNTU5YWM1OGZiMDA0NjliMmJmMA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NjFhYmM3OWM2ZDMwOWFjMWMwN2Y3NDIyMDA0NzgxNmI4ZjI3NzMzYjI3NzMx
|
10
|
+
MzdlZDkzMDFiMmNjMDZjZTE2NjhjYTI4MWI5Y2M2YzNmYWI4MDM0NDc3ZWU4
|
11
|
+
MTk0MjAxMzJjY2IyMjQ5M2Y2OTNjZDAwODViNWRjNjY4Y2JmZWU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NzA3MTI5NmY5MDVhMjQ4ZGU5NDQwZTQ0MjhmODM0ZjRjYzA5ZjEwOWU3Nzk4
|
14
|
+
ZDc1OGY5YjI5NzA3OWU1MzA4NzBiNDIyYjA3ODYwN2U3YzgyZWI5NGZhYzZh
|
15
|
+
M2Y1YjZmZDE1YWQxZGEzN2JkNDdiODY3ZjNjNzJhMGZhZjdkN2I=
|
data/Gemfile.lock
CHANGED
@@ -1,26 +1,26 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
validates_serialized (0.0.
|
4
|
+
validates_serialized (0.0.7)
|
5
5
|
activemodel (>= 3.0, < 5.0)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
|
-
activemodel (4.
|
11
|
-
activesupport (= 4.
|
10
|
+
activemodel (4.2.0)
|
11
|
+
activesupport (= 4.2.0)
|
12
12
|
builder (~> 3.1)
|
13
|
-
activesupport (4.
|
14
|
-
i18n (~> 0.
|
13
|
+
activesupport (4.2.0)
|
14
|
+
i18n (~> 0.7)
|
15
15
|
json (~> 1.7, >= 1.7.7)
|
16
16
|
minitest (~> 5.1)
|
17
|
-
thread_safe (~> 0.
|
17
|
+
thread_safe (~> 0.3, >= 0.3.4)
|
18
18
|
tzinfo (~> 1.1)
|
19
19
|
builder (3.2.2)
|
20
20
|
diff-lcs (1.2.5)
|
21
|
-
i18n (0.
|
22
|
-
json (1.8.
|
23
|
-
minitest (5.5.
|
21
|
+
i18n (0.7.0)
|
22
|
+
json (1.8.2)
|
23
|
+
minitest (5.5.1)
|
24
24
|
rake (10.4.2)
|
25
25
|
rspec (2.99.0)
|
26
26
|
rspec-core (~> 2.99.0)
|
@@ -2,7 +2,6 @@ module ActiveModel
|
|
2
2
|
module Validations
|
3
3
|
class ArrayBlockValidator < BlockValidator #:nodoc:
|
4
4
|
def initialize(options, &block)
|
5
|
-
@block = block
|
6
5
|
@options = options
|
7
6
|
super
|
8
7
|
end
|
@@ -14,10 +13,21 @@ module ActiveModel
|
|
14
13
|
add_errors_to_record(record, attribute, errors)
|
15
14
|
end
|
16
15
|
|
16
|
+
def build_serialized_object(value)
|
17
|
+
#TODO: For the Rails 4 version, I can just clear_validators! on the ValidateableHash
|
18
|
+
temp_class = Class.new(ValidateableArrayValue)
|
19
|
+
temp_class_name = "ValidateableArrayValue_#{SecureRandom.hex}"
|
20
|
+
if self.class.constants.include?(temp_class_name)
|
21
|
+
self.class.send(:remove_const, temp_class_name)
|
22
|
+
end
|
23
|
+
self.class.const_set(temp_class_name, temp_class)
|
24
|
+
temp_class.new(value)
|
25
|
+
end
|
26
|
+
|
17
27
|
def get_serialized_object_errors(array)
|
18
28
|
messages = []
|
19
29
|
array.each do |value|
|
20
|
-
serialized_object =
|
30
|
+
serialized_object = build_serialized_object(value)
|
21
31
|
serialized_object.class_eval &@block
|
22
32
|
serialized_object.valid?
|
23
33
|
message = serialized_object.errors.messages[:value]
|
@@ -29,8 +39,7 @@ module ActiveModel
|
|
29
39
|
def add_errors_to_record(record, attribute, error_array)
|
30
40
|
error_array.each do |value|
|
31
41
|
text = value.join(", ")
|
32
|
-
|
33
|
-
record.errors.add(attribute, message)
|
42
|
+
record.errors.add(attribute, "#{attribute} has a value that #{text}")
|
34
43
|
end
|
35
44
|
if exception = options[:strict]
|
36
45
|
exception = ActiveModel::StrictValidationFailed if exception == true
|
@@ -38,14 +47,6 @@ module ActiveModel
|
|
38
47
|
raise exception, exception_message unless exception_message.blank?
|
39
48
|
end
|
40
49
|
end
|
41
|
-
|
42
|
-
# def get_message_from_error_hash(error_hash)
|
43
|
-
# message = nil
|
44
|
-
# error_hash.each_pair do |key, array|
|
45
|
-
# message = array.join(", ")
|
46
|
-
# end
|
47
|
-
# message
|
48
|
-
# end
|
49
50
|
end
|
50
51
|
|
51
52
|
module ClassMethods
|
@@ -2,7 +2,6 @@ module ActiveModel
|
|
2
2
|
module Validations
|
3
3
|
class HashBlockValidator < BlockValidator #:nodoc:
|
4
4
|
def initialize(options, &block)
|
5
|
-
@block = block
|
6
5
|
@options = options
|
7
6
|
super
|
8
7
|
end
|
@@ -14,8 +13,19 @@ module ActiveModel
|
|
14
13
|
add_errors_to_record(record, attribute, error_hash)
|
15
14
|
end
|
16
15
|
|
16
|
+
def build_serialized_object(value)
|
17
|
+
#TODO: For the Rails 4 version, I can just clear_validators! on the ValidateableHash
|
18
|
+
temp_class = Class.new(ValidateableHash)
|
19
|
+
temp_class_name = "TempValidateableHash_#{SecureRandom.hex}"
|
20
|
+
if self.class.constants.include?(temp_class_name)
|
21
|
+
self.class.send(:remove_const, temp_class_name)
|
22
|
+
end
|
23
|
+
self.class.const_set(temp_class_name, temp_class)
|
24
|
+
temp_class.new(value)
|
25
|
+
end
|
26
|
+
|
17
27
|
def get_serialized_object_errors(value)
|
18
|
-
serialized_object =
|
28
|
+
serialized_object = build_serialized_object(value)
|
19
29
|
serialized_object.class_eval &@block
|
20
30
|
serialized_object.valid?
|
21
31
|
serialized_object.errors.messages
|
@@ -13,8 +13,19 @@ module ActiveModel
|
|
13
13
|
add_errors_to_record(record, attribute, error_hash)
|
14
14
|
end
|
15
15
|
|
16
|
+
def build_serialized_object(value)
|
17
|
+
#TODO: For the Rails 4 version, I can just clear_validators! on the ValidateableHash
|
18
|
+
temp_class = Class.new(ValidateableObject)
|
19
|
+
temp_class_name = "ValidateableObject_#{SecureRandom.hex}"
|
20
|
+
if self.class.constants.include?(temp_class_name)
|
21
|
+
self.class.send(:remove_const, temp_class_name)
|
22
|
+
end
|
23
|
+
self.class.const_set(temp_class_name, temp_class)
|
24
|
+
temp_class.new(value)
|
25
|
+
end
|
26
|
+
|
16
27
|
def get_serialized_object_errors(value)
|
17
|
-
serialized_object =
|
28
|
+
serialized_object = build_serialized_object(value)
|
18
29
|
serialized_object.class_eval &@block
|
19
30
|
serialized_object.valid?
|
20
31
|
serialized_object.errors.messages
|
data/spec/acceptance_spec.rb
CHANGED
@@ -71,15 +71,15 @@ class Blog
|
|
71
71
|
validates :value, length: { in: 4..20 }
|
72
72
|
end
|
73
73
|
|
74
|
-
validates_hash_keys :comments, allow_blank: true do
|
75
|
-
validates :admin, presence: true
|
76
|
-
end
|
77
|
-
|
78
74
|
validates_each_in_array :metadata, if: :metadata do
|
79
75
|
validates_hash_keys :value do
|
80
76
|
validates :timestamp, presence: true
|
81
77
|
end
|
82
78
|
end
|
79
|
+
|
80
|
+
validates_hash_keys :comments, allow_blank: true do
|
81
|
+
validates :admin, presence: true
|
82
|
+
end
|
83
83
|
end
|
84
84
|
|
85
85
|
describe ValidatesSerialized do
|
@@ -0,0 +1,113 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
class Consumer
|
4
|
+
include ActiveModel::Validations
|
5
|
+
|
6
|
+
def initialize(h={})
|
7
|
+
h.each {|k,v| send("#{k}=",v)}
|
8
|
+
end
|
9
|
+
|
10
|
+
def income_sources
|
11
|
+
@income_sources || []
|
12
|
+
end
|
13
|
+
|
14
|
+
def income_sources=(val)
|
15
|
+
@income_sources = val
|
16
|
+
end
|
17
|
+
|
18
|
+
def credit_card
|
19
|
+
@credit_card || {}
|
20
|
+
end
|
21
|
+
|
22
|
+
def credit_card=(val)
|
23
|
+
@credit_card = val
|
24
|
+
end
|
25
|
+
|
26
|
+
validates_hash_keys :credit_card do
|
27
|
+
validates :brand, presence: true, inclusion: { in: ['visa', 'mastercard'] }
|
28
|
+
validates :number, presence: true, length: { minimum: 10 }
|
29
|
+
end
|
30
|
+
|
31
|
+
validates :income_sources, presence: true
|
32
|
+
validates_each_in_array :income_sources do
|
33
|
+
validates_hash_keys :value do
|
34
|
+
validates :name, presence: true
|
35
|
+
validates :amount, presence: true, numericality: { greater_than: 0 }
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe Consumer do
|
41
|
+
it "does not add error for valid income_sources" do
|
42
|
+
model = described_class.new(income_sources: [{ amount: 40, name: "Widget Co." }])
|
43
|
+
model.valid?
|
44
|
+
model.errors[:income_sources].should be_empty
|
45
|
+
end
|
46
|
+
|
47
|
+
it "adds correct income_sources errors" do
|
48
|
+
model = described_class.new(income_sources: [{ amount: -40 }])
|
49
|
+
model.valid?
|
50
|
+
model.errors[:income_sources].should eq(["income_sources has a value that name can't be blank, amount must be greater than 0"])
|
51
|
+
end
|
52
|
+
|
53
|
+
it "does not add error for valid credit_card" do
|
54
|
+
model = described_class.new(credit_card: { brand: "visa", number: "4111333322221111" }, income_sources: [{name: nil}])
|
55
|
+
model.valid?
|
56
|
+
model.errors[:credit_card].should be_empty
|
57
|
+
end
|
58
|
+
|
59
|
+
it "adds correct credit_card errors" do
|
60
|
+
model = described_class.new(credit_card: { number: "112233" })
|
61
|
+
model.valid?
|
62
|
+
model.errors[:credit_card].should eq(["brand can't be blank, is not included in the list", "number is too short (minimum is 10 characters)"])
|
63
|
+
end
|
64
|
+
|
65
|
+
# it "is valid without comments" do
|
66
|
+
# model = Blog.new(ratings: [1, 3, 1], author: Author.new(name: "Tom"))
|
67
|
+
# model.should be_valid
|
68
|
+
# end
|
69
|
+
|
70
|
+
# it "is valid with valid tags" do
|
71
|
+
# model = Blog.new(ratings: [1, 3], author: Author.new(name: "Tom"), comments: { admin: "This is great!" }, tags: ["sweet", "awesome"])
|
72
|
+
# model.should be_valid
|
73
|
+
# end
|
74
|
+
|
75
|
+
# it "is valid with valid metadata" do
|
76
|
+
# model = Blog.new(ratings: [1, 3], author: Author.new(name: "Tom"), comments: { admin: "This is great!" }, metadata: [{timestamp: Time.new(2014, 1, 2)}, {timestamp: Time.new(2014, 2, 2)}])
|
77
|
+
# model.should be_valid
|
78
|
+
# end
|
79
|
+
|
80
|
+
# it "is invalid without Serialized author" do
|
81
|
+
# model = Blog.new(ratings: [1, 3, 1], comments: { admin: "This is great!" })
|
82
|
+
# model.should_not be_valid
|
83
|
+
# end
|
84
|
+
|
85
|
+
# it "is invalid without author name" do
|
86
|
+
# model = Blog.new(ratings: [1, 3, 1], author: Author.new, comments: { admin: "This is great!" })
|
87
|
+
# model.should_not be_valid
|
88
|
+
# model.errors[:author].should eq(["name can't be blank"])
|
89
|
+
# end
|
90
|
+
|
91
|
+
# it "is invalid without comment admin key" do
|
92
|
+
# model = Blog.new(ratings: [1, 3, 1], author: Author.new(name: "Tom"), comments: { other: "This is great!" })
|
93
|
+
# model.should_not be_valid
|
94
|
+
# model.errors[:comments].should eq(["admin can't be blank"])
|
95
|
+
# end
|
96
|
+
|
97
|
+
# it "raises error without ratings" do
|
98
|
+
# model = Blog.new(ratings: nil, author: Author.new(name: "Tom"), comments: { admin: "This is great!" })
|
99
|
+
# expect { model.valid? }.to raise_error
|
100
|
+
# end
|
101
|
+
|
102
|
+
# it "is invalid with invalid ratings value" do
|
103
|
+
# model = Blog.new(ratings: [1, 8], author: Author.new(name: "Tom"), comments: { admin: "This is great!" })
|
104
|
+
# model.should_not be_valid
|
105
|
+
# model.errors[:ratings].should eq(["is not included in the list"])
|
106
|
+
# end
|
107
|
+
|
108
|
+
# it "is invalid with invalid tags" do
|
109
|
+
# model = Blog.new(ratings: [1, 3], author: Author.new(name: "Tom"), comments: { admin: "This is great!" }, tags: ["sweet", "awesome", "i"])
|
110
|
+
# model.should_not be_valid
|
111
|
+
# model.errors[:tags].should eq(["tags has a value that is too short (minimum is 4 characters)"])
|
112
|
+
# end
|
113
|
+
end
|
@@ -23,27 +23,37 @@ describe ActiveModel::Validations::ArrayBlockValidator do
|
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
26
|
+
describe "validating" do
|
27
|
+
it "does not raise error for valid value" do
|
28
|
+
record = ValidatorBlockArrayTestOne.new(my_attr: [2, 4])
|
29
|
+
record.valid?
|
30
|
+
record.errors[:my_attr].should eq([])
|
31
|
+
end
|
31
32
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
33
|
+
it "adds error for invalid value" do
|
34
|
+
record = ValidatorBlockArrayTestOne.new(my_attr: [nil, 4])
|
35
|
+
record.valid?
|
36
|
+
record.errors[:my_attr].should eq(["my_attr has a value that can't be blank"])
|
37
|
+
end
|
37
38
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
39
|
+
it "adds multiple errors for multiple invalid value" do
|
40
|
+
record = ValidatorBlockArrayTestOne.new(my_attr: [nil, 4, nil])
|
41
|
+
record.valid?
|
42
|
+
record.errors[:my_attr].should eq(["my_attr has a value that can't be blank", "my_attr has a value that can't be blank"])
|
43
|
+
end
|
44
|
+
|
45
|
+
it "raises error for non-array" do
|
46
|
+
record = ValidatorBlockArrayTestOne.new(my_attr: 4)
|
47
|
+
expect { record.valid? }.to raise_error(TypeError, 'my_attr is not an Array')
|
48
|
+
end
|
42
49
|
end
|
43
50
|
|
44
|
-
|
45
|
-
|
46
|
-
|
51
|
+
describe "clearing ValidateableArrayValue validators" do
|
52
|
+
it "clears validators after validation" do
|
53
|
+
record = ValidatorBlockArrayTestOne.new(my_attr: [2, 4])
|
54
|
+
record.valid?
|
55
|
+
ValidateableArrayValue.validators.should be_empty
|
56
|
+
end
|
47
57
|
end
|
48
58
|
end
|
49
59
|
|
@@ -68,25 +78,35 @@ describe ActiveModel::Validations::ArrayBlockValidator do
|
|
68
78
|
end
|
69
79
|
end
|
70
80
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
81
|
+
describe "validating" do
|
82
|
+
it "does not raise error for valid value" do
|
83
|
+
record = ValidatorBlockArrayTestStrict.new(my_attr: [2, 3])
|
84
|
+
record.valid?
|
85
|
+
record.errors[:my_attr].should eq([])
|
86
|
+
end
|
76
87
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
88
|
+
it "raises error for invalid value" do
|
89
|
+
record = ValidatorBlockArrayTestStrict.new(my_attr: [2, 5])
|
90
|
+
expect { record.valid? }.to raise_error(ActiveModel::StrictValidationFailed, 'my_attr has a value that is not included in the list')
|
91
|
+
end
|
81
92
|
|
82
|
-
|
83
|
-
|
84
|
-
|
93
|
+
it "raises error for multiple invalid value" do
|
94
|
+
record = ValidatorBlockArrayTestStrict.new(my_attr: [nil, 9])
|
95
|
+
expect { record.valid? }.to raise_error(ActiveModel::StrictValidationFailed, "my_attr has a value that is not included in the list, my_attr has a value that is not included in the list")
|
96
|
+
end
|
97
|
+
|
98
|
+
it "raises error for non-array" do
|
99
|
+
record = ValidatorBlockArrayTestStrict.new(my_attr: 4)
|
100
|
+
expect { record.valid? }.to raise_error(TypeError, 'my_attr is not an Array')
|
101
|
+
end
|
85
102
|
end
|
86
103
|
|
87
|
-
|
88
|
-
|
89
|
-
|
104
|
+
describe "clearing ValidateableArrayValue validators" do
|
105
|
+
it "clears validators after validation" do
|
106
|
+
record = ValidatorBlockArrayTestStrict.new(my_attr: [2, 3])
|
107
|
+
record.valid?
|
108
|
+
ValidateableArrayValue.validators.should be_empty
|
109
|
+
end
|
90
110
|
end
|
91
111
|
end
|
92
112
|
end
|
@@ -48,6 +48,14 @@ describe ActiveModel::Validations::HashBlockValidator do
|
|
48
48
|
expect { record.valid? }.to raise_error(TypeError, 'my_attr is not a Hash')
|
49
49
|
end
|
50
50
|
end
|
51
|
+
|
52
|
+
describe "clearing ValidateableHash validators" do
|
53
|
+
it "clears validators after validation" do
|
54
|
+
record = ValidatorBlockHashTestOne.new(my_attr: { first_key: 2, second_key: 4 })
|
55
|
+
record.valid?
|
56
|
+
ValidateableHash.validators.should be_empty
|
57
|
+
end
|
58
|
+
end
|
51
59
|
end
|
52
60
|
|
53
61
|
context "#validates_hash_keys!" do
|
@@ -94,5 +102,13 @@ describe ActiveModel::Validations::HashBlockValidator do
|
|
94
102
|
expect { record.valid? }.to raise_error(TypeError, 'my_attr is not a Hash')
|
95
103
|
end
|
96
104
|
end
|
105
|
+
|
106
|
+
describe "clearing ValidateableHash validators" do
|
107
|
+
it "clears validators after validation" do
|
108
|
+
record = ValidatorBlockHashTestStrict.new(my_attr: {first_key: 2, second_key: 3})
|
109
|
+
record.valid?
|
110
|
+
ValidateableHash.validators.should be_empty
|
111
|
+
end
|
112
|
+
end
|
97
113
|
end
|
98
114
|
end
|
@@ -65,6 +65,14 @@ describe ActiveModel::Validations::ObjectBlockValidator do
|
|
65
65
|
record.errors[:my_attr].should eq(["name can't be blank", "age is not included in the list"])
|
66
66
|
end
|
67
67
|
end
|
68
|
+
|
69
|
+
describe "clearing ValidateableObject validators" do
|
70
|
+
it "clears validators after validation" do
|
71
|
+
record = ValidatorBlockObjectTestOne.new(my_attr: Foo.new(name: nil, age: 9))
|
72
|
+
record.valid?
|
73
|
+
ValidateableObject.validators.should be_empty
|
74
|
+
end
|
75
|
+
end
|
68
76
|
end
|
69
77
|
|
70
78
|
context "#validates_serialized!" do
|
@@ -106,5 +114,13 @@ describe ActiveModel::Validations::ObjectBlockValidator do
|
|
106
114
|
expect { record.valid? }.to raise_error(ActiveModel::StrictValidationFailed, "name can't be blank")
|
107
115
|
end
|
108
116
|
end
|
117
|
+
|
118
|
+
describe "clearing ValidateableObject validators" do
|
119
|
+
it "clears validators after validation" do
|
120
|
+
record = ValidatorBlockObjectTestStrict.new(my_attr: Foo.new(name: "Jim", age: 3))
|
121
|
+
record.valid?
|
122
|
+
ValidateableObject.validators.should be_empty
|
123
|
+
end
|
124
|
+
end
|
109
125
|
end
|
110
126
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: validates_serialized
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- brycesenz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -114,6 +114,7 @@ files:
|
|
114
114
|
- notes.md
|
115
115
|
- spec/acceptance_spec.rb
|
116
116
|
- spec/each_validator_spec.rb
|
117
|
+
- spec/new_acceptance_spec.rb
|
117
118
|
- spec/spec_helper.rb
|
118
119
|
- spec/validateable_array_value_spec.rb
|
119
120
|
- spec/validateable_hash_spec.rb
|
@@ -152,6 +153,7 @@ summary: An ActiveModel enhancement that allows for better validation of seriali
|
|
152
153
|
test_files:
|
153
154
|
- spec/acceptance_spec.rb
|
154
155
|
- spec/each_validator_spec.rb
|
156
|
+
- spec/new_acceptance_spec.rb
|
155
157
|
- spec/spec_helper.rb
|
156
158
|
- spec/validateable_array_value_spec.rb
|
157
159
|
- spec/validateable_hash_spec.rb
|