validates_serialized 0.0.3 → 0.0.4

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- OTc4ZmQ5ZGFhNDlmOGEwZGI0NzI1NzA1NWQ0OTZmY2UyMTdlN2MxNA==
4
+ NjA0YjdlMjFkNjMxMzZhNTRmYzMyYjVkMmNmYWJkYmM0NzA4OGJjOA==
5
5
  data.tar.gz: !binary |-
6
- Y2VlNTQ5NjViNzExZmZlZGFkNDMwNzAyZjExNjkyYTM1OTVmYWFjMw==
6
+ NTI3ZDY0ZWQ5ZWVkMTM0ZjVlYzc4MGU2ZTFjNWYxMmY3MWJlNWIzOA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ODM1ODIzYmIzYjIyZTVhOWU0NjJjMjkxODI0MGUxMjdmZWM2MWYzOWIyYzBl
10
- NmZhOThlN2VjZWRiNjJlMDBjYWIzYzAyMDI0MzE2ZDgwZWUwMDRkMTkxMTQw
11
- MmQzYzZmMDlmZWQ0NjIyMTBlNDhhNWQyYWUwNjkzMjZiMzM2NmI=
9
+ Y2U3N2VhNjIyMjc4YWYyMWUyYWNhOWFjNzk1OGVhNjY3YTY0YWUzNTI4OGRj
10
+ N2RlOTA0YmNhNWVjOWI4MDA0Mjg4NzdiZGE5YjQ1OGM4OTkzNzJlZjVjNmQ5
11
+ MWRmYTY3MWVmZWE0Y2NkNzU0YjJiMzI2N2QyNjdlNzFmODYwNDg=
12
12
  data.tar.gz: !binary |-
13
- ZmY2ZGJkMzc0MGFkOTJlYjFiMmUwNTZmNzkxMGJlM2ZjMjZhYzY0NWU0MTAw
14
- Y2JjMmIyYWM0MDUyNDkzNjdmMzI2YTYwYTM2ZWIyNmNlNGNkNzkxZTBjZTY1
15
- ZWYzZTY5NTY5ZjFkY2E5YmUwMGM0OTU2ODFhMmI4ZjYzZDk2Mzc=
13
+ NThmNmUwODllOGQxYjhhZGQ0ZTZkMmM2NTc3MjM4ODE0MDJhOTYwZmEyM2M5
14
+ YWNlMzk0ZTk1NGE5N2ZjOGI1NTMwMTFiZWM0YWQ3YWJmMjM3ZDZkNjhlYjc2
15
+ MzNhOGZhYWZiYWM1NjRlNGNiMWUyYTRjYzhlYmFmZGM5ODQ0ZGM=
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- validates_serialized (0.0.2)
4
+ validates_serialized (0.0.3)
5
5
  activemodel (>= 3.0, < 5.0)
6
6
 
7
7
  GEM
@@ -10,4 +10,8 @@ class ValidateableArrayValue
10
10
  def value
11
11
  @value
12
12
  end
13
+
14
+ def method_missing(sym, *args, &block)
15
+ @value.send sym, *args, &block
16
+ end
13
17
  end
@@ -1,3 +1,3 @@
1
1
  module ValidatesSerialized
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -37,6 +37,14 @@ class Blog
37
37
  @ratings = val
38
38
  end
39
39
 
40
+ def tags
41
+ @tags
42
+ end
43
+
44
+ def tags=(val)
45
+ @tags = val
46
+ end
47
+
40
48
  def comments
41
49
  @comments
42
50
  end
@@ -45,13 +53,33 @@ class Blog
45
53
  @comments = val
46
54
  end
47
55
 
56
+ def metadata
57
+ @metadata
58
+ end
59
+
60
+ def metadata=(val)
61
+ @metadata = val
62
+ end
63
+
48
64
  validates_serialized :author do
49
65
  validates :name, presence: true
50
66
  end
67
+
51
68
  validates_array_values :ratings, inclusion: { in: [1, 2, 3] }
69
+
70
+ validates_each_in_array :tags, if: :tags do
71
+ validates :value, length: { in: 4..20 }
72
+ end
73
+
52
74
  validates_hash_keys :comments, allow_blank: true do
53
75
  validates :admin, presence: true
54
76
  end
77
+
78
+ validates_each_in_array :metadata, if: :metadata do
79
+ validates_hash_keys :value do
80
+ validates :timestamp, presence: true
81
+ end
82
+ end
55
83
  end
56
84
 
57
85
  describe ValidatesSerialized do
@@ -65,6 +93,16 @@ describe ValidatesSerialized do
65
93
  model.should be_valid
66
94
  end
67
95
 
96
+ it "is valid with valid tags" do
97
+ model = Blog.new(ratings: [1, 3], author: Author.new(name: "Tom"), comments: { admin: "This is great!" }, tags: ["sweet", "awesome"])
98
+ model.should be_valid
99
+ end
100
+
101
+ it "is valid with valid metadata" do
102
+ 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)}])
103
+ model.should be_valid
104
+ end
105
+
68
106
  it "raises error without Serialized author" do
69
107
  model = Blog.new(ratings: [1, 3, 1], comments: { admin: "This is great!" })
70
108
  expect { model.valid? }.to raise_error
@@ -92,4 +130,10 @@ describe ValidatesSerialized do
92
130
  model.should_not be_valid
93
131
  model.errors[:ratings].should eq(["is not included in the list"])
94
132
  end
133
+
134
+ it "is invalid with invalid tags" do
135
+ model = Blog.new(ratings: [1, 3], author: Author.new(name: "Tom"), comments: { admin: "This is great!" }, tags: ["sweet", "awesome", "i"])
136
+ model.should_not be_valid
137
+ model.errors[:tags].should eq(["tags has a value that is too short (minimum is 4 characters)"])
138
+ end
95
139
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: validates_serialized
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - brycesenz