hashrocket-validatable 1.7.2 → 1.7.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 1
3
3
  :minor: 7
4
- :patch: 2
4
+ :patch: 4
@@ -28,6 +28,8 @@ module Validatable
28
28
  return nil if errors[attribute.to_sym].nil?
29
29
  errors[attribute.to_sym].size == 1 ? errors[attribute.to_sym].first : errors[attribute.to_sym]
30
30
  end
31
+
32
+ alias [] on
31
33
 
32
34
  def add(attribute, message) #:nodoc:
33
35
  errors[attribute.to_sym] = [] if errors[attribute.to_sym].nil?
@@ -0,0 +1,13 @@
1
+ module Validatable
2
+ class ValidatesAssociated < ValidationBase #:nodoc:
3
+ def valid?(instance)
4
+ Array(instance.send(attribute)).compact.map do |child|
5
+ child.valid?
6
+ end.all?
7
+ end
8
+
9
+ def message(instance)
10
+ super || "is invalid"
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,41 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
+
3
+ module Functional
4
+ class ValidatesAssociatedTest < Test::Unit::TestCase
5
+ def setup
6
+ @parent = Class.new do
7
+ include Validatable
8
+ attr_accessor :children
9
+ validates_associated :children
10
+ end
11
+ @child = Class.new do
12
+ include Validatable
13
+ attr_accessor :name
14
+ validates_presence_of :name
15
+ end
16
+ end
17
+
18
+ test "given invalid child, when validated, then error is in the parent's error collection" do
19
+ instance = @parent.new
20
+ instance.children = [@child.new]
21
+ instance.valid?
22
+ assert_equal "is invalid", instance.errors.on(:children)
23
+ end
24
+
25
+ test "given two invalid children, when validated, then both children have errors" do
26
+ instance = @parent.new
27
+ instance.children = [@child.new, @child.new]
28
+ instance.valid?
29
+ instance.children.each do |child|
30
+ assert_not_nil child.errors.on(:name)
31
+ end
32
+ end
33
+
34
+ test "given valid child, when validated, the parent is valid" do
35
+ instance = @parent.new
36
+ instance.children = [@child.new]
37
+ instance.children.first.name = 'x'
38
+ assert instance.valid?
39
+ end
40
+ end
41
+ end
@@ -60,5 +60,11 @@ Expectations do
60
60
  errors.add(:attribute1, "message1")
61
61
  errors.add(:attribute2, "message2")
62
62
  errors.count
63
- end
63
+ end
64
+
65
+ expect "message" do
66
+ errors = Validatable::Errors.new
67
+ errors.add(:attribute, "message")
68
+ errors[:attribute]
69
+ end
64
70
  end
@@ -0,0 +1,29 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
+
3
+ Expectations do
4
+
5
+ expect false do
6
+ parent = stub('parent', :child => stub(:valid? => false))
7
+ validation = Validatable::ValidatesAssociated.new stub_everything, :child
8
+ validation.valid?(parent)
9
+ end
10
+
11
+ expect true do
12
+ parent = stub('parent', :child => stub(:valid? => true))
13
+ validation = Validatable::ValidatesAssociated.new stub_everything, :child
14
+ validation.valid?(parent)
15
+ end
16
+
17
+ expect false do
18
+ parent = stub('parent', :children => [stub(:valid? => false)])
19
+ validation = Validatable::ValidatesAssociated.new stub_everything, :children
20
+ validation.valid?(parent)
21
+ end
22
+
23
+ expect true do
24
+ parent = stub('parent', :children => [stub(:valid? => true)])
25
+ validation = Validatable::ValidatesAssociated.new stub_everything, :children
26
+ validation.valid?(parent)
27
+ end
28
+
29
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hashrocket-validatable
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.2
4
+ version: 1.7.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jay Fields
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2009-07-27 00:00:00 -07:00
13
+ date: 2009-08-31 00:00:00 -07:00
14
14
  default_executable:
15
15
  dependencies: []
16
16
 
@@ -37,6 +37,7 @@ files:
37
37
  - lib/validatable_class_methods.rb
38
38
  - lib/validatable_instance_methods.rb
39
39
  - lib/validations/validates_acceptance_of.rb
40
+ - lib/validations/validates_associated.rb
40
41
  - lib/validations/validates_confirmation_of.rb
41
42
  - lib/validations/validates_each.rb
42
43
  - lib/validations/validates_format_of.rb
@@ -48,6 +49,7 @@ files:
48
49
  - test/all_tests.rb
49
50
  - test/functional/test_validatable.rb
50
51
  - test/functional/test_validates_acceptance_of.rb
52
+ - test/functional/test_validates_associated.rb
51
53
  - test/functional/test_validates_confirmation_of.rb
52
54
  - test/functional/test_validates_each.rb
53
55
  - test/functional/test_validates_format_of.rb
@@ -60,6 +62,7 @@ files:
60
62
  - test/unit/test_understandable.rb
61
63
  - test/unit/test_validatable.rb
62
64
  - test/unit/test_validates_acceptance_of.rb
65
+ - test/unit/test_validates_associated.rb
63
66
  - test/unit/test_validates_confirmation_of.rb
64
67
  - test/unit/test_validates_format_of.rb
65
68
  - test/unit/test_validates_length_of.rb
@@ -67,8 +70,9 @@ files:
67
70
  - test/unit/test_validates_presence_of.rb
68
71
  - test/unit/test_validates_true_for.rb
69
72
  - test/unit/test_validation_base.rb
70
- has_rdoc: true
73
+ has_rdoc: false
71
74
  homepage: http://github.com/jnunemaker/validatable
75
+ licenses:
72
76
  post_install_message:
73
77
  rdoc_options:
74
78
  - --charset=UTF-8
@@ -89,14 +93,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
89
93
  requirements: []
90
94
 
91
95
  rubyforge_project:
92
- rubygems_version: 1.2.0
96
+ rubygems_version: 1.3.5
93
97
  signing_key:
94
- specification_version: 2
98
+ specification_version: 3
95
99
  summary: Validatable is a library for adding validations.
96
100
  test_files:
97
101
  - test/all_tests.rb
98
102
  - test/functional/test_validatable.rb
99
103
  - test/functional/test_validates_acceptance_of.rb
104
+ - test/functional/test_validates_associated.rb
100
105
  - test/functional/test_validates_confirmation_of.rb
101
106
  - test/functional/test_validates_each.rb
102
107
  - test/functional/test_validates_format_of.rb
@@ -109,6 +114,7 @@ test_files:
109
114
  - test/unit/test_understandable.rb
110
115
  - test/unit/test_validatable.rb
111
116
  - test/unit/test_validates_acceptance_of.rb
117
+ - test/unit/test_validates_associated.rb
112
118
  - test/unit/test_validates_confirmation_of.rb
113
119
  - test/unit/test_validates_format_of.rb
114
120
  - test/unit/test_validates_length_of.rb