nested_validator 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NjkwYmI4M2ZlNjJmY2MwNmM5NzcyYmMxOTE4OGIyMDFhYjk2YWI2MA==
4
+ NTMyMTRjODIyZWYxOTZmZDIyNTc4MTlmNWYyNmQyZjY1MTQ2MTc1Mw==
5
5
  data.tar.gz: !binary |-
6
- ODkyMzQ1YTYwZWI0MTA2ODdiY2RlNjI2Y2IwM2JkMjE1ODYxODRhOQ==
6
+ ZGVhZGFmOTRjZmM0ZmVhYWNkNGM3NjVjNDAyNWRiMGI1ZmEyMDBmOA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- M2UzMDY5YTNiNzZkNDcwMTk0YmFjZWExZGM5ZWYyMmNhM2E5NDJiMDkzOTJj
10
- Nzk4Zjk4ODM5OTQ0YTI0ZmM2OTVmODE5NjFhZmI3MDg2OWYyM2NkMDExNWQ3
11
- NjA4NGNiN2EzMWM3YTQyM2IwMzU1ZDVjYzEwYjA3ODhlZmRhNTk=
9
+ NWY0Y2FkZmE0OGU4MTYyYjBlYzM4N2EwNWU1ZDEzMDQzYjUzZGE0NzMxN2Nj
10
+ YzliMmJkOWQ3MTY2YjlmNjYzM2I1OWQ4ZTBhMzM2NTRlYzMyNTE5M2Q4NDc1
11
+ ZjdjNTI3N2YwOWJmMDg2MjBiMWZmZTBlNWY1NWQ5NGY0ZTc0OWU=
12
12
  data.tar.gz: !binary |-
13
- MzhhNTE1NGI2YThlZGY5ZjU0NjE3MTMzMDY3YWMzNWYzZTFiM2M0MGY4ZmZm
14
- ZGMyNTE3ZDI1ZjI3MjM4YWEyZWU5ZWVlNjllNDRiNGRlYjVhYTJjNGIyNTNi
15
- NjUwZWFiNmI2OGQxZmQwZDM4ZTBiMzI0YjcwZjQ4ODY3MmM4MDY=
13
+ YzE4N2RhYTkxNWQ3MjFiYzg4ZGU1YzM1YmM4MDBiZmQ0ZjA0NWZkMjVjYjNj
14
+ MTFlZTA5MGQyMGZmY2VhZWM2OGRkZTYzM2MzNzNhODg3ZGRiNDcyY2UwODVj
15
+ Y2E2N2RmNDk5NjIyNzZjYmViZjU2NWM3ZTY5MDE2MGM1NGM4ZTM=
data/Gemfile.lock CHANGED
@@ -1,8 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- nested_validator (1.0.2)
4
+ nested_validator (1.0.3)
5
5
  activemodel
6
+ activesupport
6
7
 
7
8
  GEM
8
9
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -153,7 +153,7 @@ You can use the ```validates_nested``` method:
153
153
  class ParentMultiple < ParentBase
154
154
  attr_accessor :child2
155
155
 
156
- validates_nested :child, :child2, only: :attribute1
156
+ validate_nested :child, :child2, only: :attribute1
157
157
 
158
158
  def initialize
159
159
  self.child = Child.new
@@ -11,129 +11,126 @@
11
11
  # it { should validate_nested(:child).only(:attribute1, :attribute2) }
12
12
  # it { should validate_nested(:child).except(:attribute1) }
13
13
  # end
14
- if defined? RSpec
14
+ RSpec::Matchers.define :validate_nested do |child_name|
15
15
 
16
- RSpec::Matchers.define :validate_nested do |child_name|
16
+ attr_accessor :child_name, :prefix, :only_keys, :except_keys # inputs
17
+ attr_accessor :parent, :actual_keys
17
18
 
18
- attr_accessor :child_name, :prefix, :only_keys, :except_keys # inputs
19
- attr_accessor :parent, :actual_keys
19
+ TEST_KEY ||= :__test_key__
20
20
 
21
- TEST_KEY ||= :__test_key__
21
+ match do |parent|
22
+ self.prefix ||= ''
23
+ self.only_keys ||= []
24
+ self.except_keys ||= []
22
25
 
23
- match do |parent|
24
- self.prefix ||= ''
25
- self.only_keys ||= []
26
- self.except_keys ||= []
26
+ self.child_name = child_name
27
+ self.parent = parent
27
28
 
28
- self.child_name = child_name
29
- self.parent = parent
29
+ return false unless parent.respond_to? child_name
30
+ self.actual_keys = (error_keys_when_child_validity_is(false) - error_keys_when_child_validity_is(true))
31
+ return false if invalid_child_keys.present?
30
32
 
31
- return false unless parent.respond_to? child_name
32
- self.actual_keys = (error_keys_when_child_validity_is(false) - error_keys_when_child_validity_is(true))
33
- return false if invalid_child_keys.present?
34
33
 
34
+ actual_keys == expected_keys
35
+ end
35
36
 
36
- actual_keys == expected_keys
37
- end
38
-
39
- chain(:with_prefix) { |prefix| self.prefix = prefix }
40
- chain(:only) { |*only| self.only_keys = only }
41
- chain(:except) { |*except| self.except_keys = except }
37
+ chain(:with_prefix) { |prefix| self.prefix = prefix }
38
+ chain(:only) { |*only| self.only_keys = only }
39
+ chain(:except) { |*except| self.except_keys = except }
42
40
 
43
- def child
44
- parent.send child_name
45
- end
41
+ def child
42
+ parent.send child_name
43
+ end
46
44
 
47
- def error_keys_when_child_validity_is(valid)
48
- child_error_keys = combine TEST_KEY, only_keys, except_keys
49
- child_errors = child_error_keys.inject({}){|result, key| result[key] = ['error message'];result }
45
+ def error_keys_when_child_validity_is(valid)
46
+ child_error_keys = combine TEST_KEY, only_keys, except_keys
47
+ child_errors = child_error_keys.inject({}){|result, key| result[key] = ['error message'];result }
50
48
 
51
- allow(child).to receive(:valid?) { valid }
52
- allow(child).to receive(:errors) { valid ? [] : child_errors }
49
+ allow(child).to receive(:valid?) { valid }
50
+ allow(child).to receive(:errors) { valid ? [] : child_errors }
53
51
 
54
- parent.valid?
55
- parent.errors.keys
56
- end
52
+ parent.valid?
53
+ parent.errors.keys
54
+ end
57
55
 
58
- def expected_keys
59
- expected_child_keys.map{|key| :"#{expected_prefix} #{key}"}
60
- end
56
+ def expected_keys
57
+ expected_child_keys.map{|key| :"#{expected_prefix} #{key}"}
58
+ end
61
59
 
62
- def expected_prefix
63
- prefix.present? ? prefix : child_name
64
- end
60
+ def expected_prefix
61
+ prefix.present? ? prefix : child_name
62
+ end
65
63
 
66
- def actual_prefix
67
- :"#{actual_keys.first.to_s.split.first}"
68
- end
64
+ def actual_prefix
65
+ :"#{actual_keys.first.to_s.split.first}"
66
+ end
69
67
 
70
- def expected_child_keys
71
- expected_keys = only_keys.present? ? only_keys : [TEST_KEY]
72
- unique_except_keys = except_keys - only_keys
73
- combine expected_keys - unique_except_keys
74
- end
68
+ def expected_child_keys
69
+ expected_keys = only_keys.present? ? only_keys : [TEST_KEY]
70
+ unique_except_keys = except_keys - only_keys
71
+ combine expected_keys - unique_except_keys
72
+ end
75
73
 
76
- def actual_child_keys
77
- actual_keys.map{|key| key.to_s.sub(/^.*\s+/, '').to_sym }
78
- end
74
+ def actual_child_keys
75
+ actual_keys.map{|key| key.to_s.sub(/^.*\s+/, '').to_sym }
76
+ end
79
77
 
80
- def invalid_child_keys
81
- (only_keys + except_keys).reject{|key| child.respond_to? key}
82
- end
78
+ def invalid_child_keys
79
+ (only_keys + except_keys).reject{|key| child.respond_to? key}
80
+ end
83
81
 
84
- description do
85
- message = "validate nested #{show child_name}"
86
- message << " with only: #{show only_keys}" if only_keys.present?
87
- message << " except: #{show except_keys}" if except_keys.present?
88
- message << " with prefix #{show prefix}" if prefix.present?
89
- message
90
- end
82
+ description do
83
+ message = "validate nested #{show child_name}"
84
+ message << " with only: #{show only_keys}" if only_keys.present?
85
+ message << " except: #{show except_keys}" if except_keys.present?
86
+ message << " with prefix #{show prefix}" if prefix.present?
87
+ message
88
+ end
91
89
 
92
- failure_message do
93
- case
94
- when common_failure_message
95
- common_failure_message
96
- when (missing_child_keys = expected_child_keys - actual_child_keys - invalid_child_keys - [TEST_KEY]).present?
97
- "#{parent} doesn't nest validations for: #{show missing_child_keys}"
98
- when actual_keys.empty?
99
- "parent doesn't nest validations for #{show child_name}"
100
- when actual_prefix != expected_prefix
101
- if prefix.present?
102
- "parent uses a prefix of #{show actual_prefix} rather than #{show expected_prefix}"
103
- else
104
- "parent has a prefix of #{show actual_prefix}. Are you missing '.with_prefix(#{show actual_prefix})'?"
105
- end
90
+ failure_message do
91
+ case
92
+ when common_failure_message
93
+ common_failure_message
94
+ when (missing_child_keys = expected_child_keys - actual_child_keys - invalid_child_keys - [TEST_KEY]).present?
95
+ "#{parent} doesn't nest validations for: #{show missing_child_keys}"
96
+ when actual_keys.empty?
97
+ "parent doesn't nest validations for #{show child_name}"
98
+ when actual_prefix != expected_prefix
99
+ if prefix.present?
100
+ "parent uses a prefix of #{show actual_prefix} rather than #{show expected_prefix}"
106
101
  else
107
- "parent does nest validations for: #{show except_keys & actual_child_keys}"
108
- end
102
+ "parent has a prefix of #{show actual_prefix}. Are you missing '.with_prefix(#{show actual_prefix})'?"
103
+ end
104
+ else
105
+ "parent does nest validations for: #{show except_keys & actual_child_keys}"
109
106
  end
107
+ end
110
108
 
111
- failure_message_when_negated do
112
- case
113
- when common_failure_message
114
- common_failure_message
115
- when (extras = only_keys & actual_child_keys).present?
116
- "#{parent} does nest #{show child_name} validations for: #{show extras}"
117
- when except_keys.present?
118
- "#{parent} doesn't nest #{show child_name} validations for: #{show except_keys - actual_child_keys}"
119
- when prefix.present?
120
- "#{parent} does nest validations for: #{show child_name} with a prefix of #{show prefix}"
121
- else
122
- "#{parent} does nest validations for: #{show child_name}"
123
- end
109
+ failure_message_when_negated do
110
+ case
111
+ when common_failure_message
112
+ common_failure_message
113
+ when (extras = only_keys & actual_child_keys).present?
114
+ "#{parent} does nest #{show child_name} validations for: #{show extras}"
115
+ when except_keys.present?
116
+ "#{parent} doesn't nest #{show child_name} validations for: #{show except_keys - actual_child_keys}"
117
+ when prefix.present?
118
+ "#{parent} does nest validations for: #{show child_name} with a prefix of #{show prefix}"
119
+ else
120
+ "#{parent} does nest validations for: #{show child_name}"
124
121
  end
122
+ end
125
123
 
126
- def common_failure_message
127
- return "#{parent} doesn't respond to #{show child_name}" unless parent.respond_to?(child_name)
128
- "#{child_name} doesn't respond to #{show invalid_child_keys}" if invalid_child_keys.present?
129
- end
124
+ def common_failure_message
125
+ return "#{parent} doesn't respond to #{show child_name}" unless parent.respond_to?(child_name)
126
+ "#{child_name} doesn't respond to #{show invalid_child_keys}" if invalid_child_keys.present?
127
+ end
130
128
 
131
- def show(value)
132
- Array.wrap(value).map{|key| key.is_a?(Symbol) ? ":#{key}" : key.to_s}.join(', ')
133
- end
129
+ def show(value)
130
+ Array.wrap(value).map{|key| key.is_a?(Symbol) ? ":#{key}" : key.to_s}.join(', ')
131
+ end
134
132
 
135
- def combine(*keys)
136
- keys.flatten.compact
137
- end
133
+ def combine(*keys)
134
+ keys.flatten.compact
138
135
  end
139
136
  end
@@ -1,3 +1,3 @@
1
1
  module NestedValidator
2
- VERSION = '1.0.2'
2
+ VERSION = '1.0.3'
3
3
  end
@@ -1,3 +1,3 @@
1
1
  require_relative 'nested_validator/version'
2
2
  require_relative 'nested_validator/nested_validator'
3
- require_relative 'nested_validator/validate_nested_matcher'
3
+ require_relative 'nested_validator/validate_nested_matcher' if defined?(RSpec)
@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.require_paths = ['lib']
21
21
 
22
22
  spec.add_dependency 'activemodel'
23
+ spec.add_dependency 'activesupport'
23
24
 
24
25
  #spec.add_development_dependency 'awesome_print'
25
26
  #spec.add_development_dependency 'pry'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nested_validator
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Declan Whelan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-25 00:00:00.000000000 Z
11
+ date: 2014-12-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ! '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement