conditional_validation 0.1.0 → 1.0.0

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.
Files changed (60) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +11 -0
  3. data/.travis.yml +21 -0
  4. data/CHANGELOG.md +11 -0
  5. data/Gemfile +6 -0
  6. data/Gemfile.lock +51 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +101 -41
  9. data/Rakefile +6 -28
  10. data/bin/console +15 -0
  11. data/bin/setup +8 -0
  12. data/conditional_validation.gemspec +40 -0
  13. data/lib/conditional_validation.rb +3 -3
  14. data/lib/conditional_validation/validation_flag.rb +33 -37
  15. data/lib/conditional_validation/version.rb +1 -1
  16. metadata +104 -112
  17. data/MIT-LICENSE +0 -20
  18. data/lib/conditional_validation/validation_accessor.rb +0 -51
  19. data/test/conditional_validation_test.rb +0 -101
  20. data/test/dummy/README.rdoc +0 -28
  21. data/test/dummy/Rakefile +0 -6
  22. data/test/dummy/app/assets/javascripts/application.js +0 -13
  23. data/test/dummy/app/assets/stylesheets/application.css +0 -13
  24. data/test/dummy/app/controllers/application_controller.rb +0 -5
  25. data/test/dummy/app/helpers/application_helper.rb +0 -2
  26. data/test/dummy/app/models/user.rb +0 -21
  27. data/test/dummy/app/views/layouts/application.html.erb +0 -14
  28. data/test/dummy/bin/bundle +0 -3
  29. data/test/dummy/bin/rails +0 -4
  30. data/test/dummy/bin/rake +0 -4
  31. data/test/dummy/config.ru +0 -4
  32. data/test/dummy/config/application.rb +0 -23
  33. data/test/dummy/config/boot.rb +0 -5
  34. data/test/dummy/config/database.yml +0 -25
  35. data/test/dummy/config/environment.rb +0 -5
  36. data/test/dummy/config/environments/development.rb +0 -29
  37. data/test/dummy/config/environments/production.rb +0 -80
  38. data/test/dummy/config/environments/test.rb +0 -36
  39. data/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
  40. data/test/dummy/config/initializers/filter_parameter_logging.rb +0 -4
  41. data/test/dummy/config/initializers/inflections.rb +0 -16
  42. data/test/dummy/config/initializers/mime_types.rb +0 -5
  43. data/test/dummy/config/initializers/secret_token.rb +0 -12
  44. data/test/dummy/config/initializers/session_store.rb +0 -3
  45. data/test/dummy/config/initializers/wrap_parameters.rb +0 -14
  46. data/test/dummy/config/locales/en.yml +0 -23
  47. data/test/dummy/config/routes.rb +0 -56
  48. data/test/dummy/db/development.sqlite3 +0 -0
  49. data/test/dummy/db/migrate/20131119215801_create_users.rb +0 -9
  50. data/test/dummy/db/schema.rb +0 -24
  51. data/test/dummy/db/test.sqlite3 +0 -0
  52. data/test/dummy/log/development.log +0 -17
  53. data/test/dummy/log/test.log +0 -0
  54. data/test/dummy/public/404.html +0 -58
  55. data/test/dummy/public/422.html +0 -58
  56. data/test/dummy/public/500.html +0 -57
  57. data/test/dummy/public/favicon.ico +0 -0
  58. data/test/dummy/test/fixtures/users.yml +0 -8
  59. data/test/dummy/test/models/user_test.rb +0 -7
  60. data/test/test_helper.rb +0 -16
@@ -1,5 +1,5 @@
1
- require "conditional_validation/validation_flag"
2
- require "conditional_validation/validation_accessor"
3
-
4
1
  module ConditionalValidation
5
2
  end
3
+
4
+ require "conditional_validation/version"
5
+ require "conditional_validation/validation_flag"
@@ -1,47 +1,43 @@
1
1
  module ConditionalValidation
2
+ # ConditionalValidation::ValidationFlag is extended by model classes to add
3
+ # the `validation_flag` macro.
2
4
  module ValidationFlag
3
- extend ActiveSupport::Concern
5
+ # Macro method for defining attr_accessor methods, and the associated
6
+ # enable/disable/predicate methods that wrap the attr_acessor methods, for
7
+ # determining when to run validation sets on a model.
8
+ #
9
+ # @param flags [*Array<String>] the validation flag names
10
+ #
11
+ # @example
12
+ # class User
13
+ # validation_flag :address_attributes
14
+ # end
15
+ def validation_flag(*flags)
16
+ raise ArgumentError, "flags can't be empty" if flags.empty?
4
17
 
5
- module ClassMethods
6
- # Macro method for defining an attr_accessor and
7
- # enable/disable/predicate methods that wrap the attr_acessor for
8
- # determining when to run a set of validation on an ActiveRecord model.
9
- #
10
- # @param [*Array] flags the section names for which to define
11
- # validation flags for
12
- #
13
- # @example
14
- # class User
15
- # validation_flag :address_attributes
16
- # end
17
- #
18
- # # => Defines the following methods on instances of the User class:
19
- # # enable_address_attributes_validation
20
- # # disable_address_attributes_validation
21
- # # validate_on_address_attributes?
22
- def validation_flag(*flags)
23
- attr_accessor *flags.map { |flag| "_#{flag}_validation_flag" }
18
+ accessor_method_names = flags.map { |flag| "_#{flag}_validation_flag" }
19
+ attr_accessor(*accessor_method_names)
24
20
 
25
- flags.each do |flag|
26
- class_eval <<-METHODS, __FILE__, __LINE__ + 1
27
- def enable_#{flag}_validation
28
- self._#{flag}_validation_flag = true
29
- self
30
- end
21
+ flags.each do |flag|
22
+ # def enable_address_attributes_validation
23
+ # def disable_address_attributes_validation
24
+ # def validate_on_address_attributes?
25
+ class_eval <<-RUBY, __FILE__, __LINE__ + 1
26
+ def enable_#{flag}_validation
27
+ self._#{flag}_validation_flag = true
28
+ self
29
+ end
31
30
 
32
- def disable_#{flag}_validation
33
- self._#{flag}_validation_flag = false
34
- self
35
- end
31
+ def disable_#{flag}_validation
32
+ self._#{flag}_validation_flag = false
33
+ self
34
+ end
36
35
 
37
- def validate_on_#{flag}?
38
- !!_#{flag}_validation_flag
39
- end
40
- METHODS
41
- end
36
+ def validate_on_#{flag}?
37
+ !!_#{flag}_validation_flag
38
+ end
39
+ RUBY
42
40
  end
43
41
  end
44
42
  end
45
43
  end
46
-
47
- ActiveRecord::Base.send(:include, ConditionalValidation::ValidationFlag)
@@ -1,3 +1,3 @@
1
1
  module ConditionalValidation
2
- VERSION = "0.1.0"
2
+ VERSION = "1.0.0"
3
3
  end
metadata CHANGED
@@ -1,114 +1,149 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: conditional_validation
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Dobbins
8
8
  autorequire:
9
- bindir: bin
9
+ bindir: exe
10
10
  cert_chain: []
11
- date: 2014-08-31 00:00:00.000000000 Z
11
+ date: 2018-04-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rails
14
+ name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 3.0.0
20
- type: :runtime
19
+ version: '1.16'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.16'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '5.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '5.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: minitest-reporters
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.2'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.2'
69
+ - !ruby/object:Gem::Dependency
70
+ name: simplecov
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.16'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.16'
83
+ - !ruby/object:Gem::Dependency
84
+ name: byebug
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '10.0'
90
+ type: :development
21
91
  prerelease: false
22
92
  version_requirements: !ruby/object:Gem::Requirement
23
93
  requirements:
24
- - - ">="
94
+ - - "~>"
25
95
  - !ruby/object:Gem::Version
26
- version: 3.0.0
96
+ version: '10.0'
27
97
  - !ruby/object:Gem::Dependency
28
- name: sqlite3
98
+ name: pry
29
99
  requirement: !ruby/object:Gem::Requirement
30
100
  requirements:
31
- - - ">="
101
+ - - "~>"
32
102
  - !ruby/object:Gem::Version
33
- version: '0'
103
+ version: '0.11'
34
104
  type: :development
35
105
  prerelease: false
36
106
  version_requirements: !ruby/object:Gem::Requirement
37
107
  requirements:
38
- - - ">="
108
+ - - "~>"
39
109
  - !ruby/object:Gem::Version
40
- version: '0'
110
+ version: '0.11'
41
111
  - !ruby/object:Gem::Dependency
42
- name: minitest-rails
112
+ name: pry-byebug
43
113
  requirement: !ruby/object:Gem::Requirement
44
114
  requirements:
45
- - - ">="
115
+ - - "~>"
46
116
  - !ruby/object:Gem::Version
47
- version: '0'
117
+ version: '3.6'
48
118
  type: :development
49
119
  prerelease: false
50
120
  version_requirements: !ruby/object:Gem::Requirement
51
121
  requirements:
52
- - - ">="
122
+ - - "~>"
53
123
  - !ruby/object:Gem::Version
54
- version: '0'
55
- description: Conditional Validation allows validation flags to be enabled to determine
56
- when certain validations should be run on a model.
124
+ version: '3.6'
125
+ description: ConditionalValidation simplifies adding validation flags and then querying
126
+ state to determine when associated validations should be run on models.
57
127
  email:
58
- - pdobbins@gmail.com
128
+ - paul.dobbins@icloud.com
59
129
  executables: []
60
130
  extensions: []
61
131
  extra_rdoc_files: []
62
132
  files:
63
- - MIT-LICENSE
133
+ - ".gitignore"
134
+ - ".travis.yml"
135
+ - CHANGELOG.md
136
+ - Gemfile
137
+ - Gemfile.lock
138
+ - LICENSE.txt
64
139
  - README.md
65
140
  - Rakefile
141
+ - bin/console
142
+ - bin/setup
143
+ - conditional_validation.gemspec
66
144
  - lib/conditional_validation.rb
67
- - lib/conditional_validation/validation_accessor.rb
68
145
  - lib/conditional_validation/validation_flag.rb
69
146
  - lib/conditional_validation/version.rb
70
- - test/conditional_validation_test.rb
71
- - test/dummy/README.rdoc
72
- - test/dummy/Rakefile
73
- - test/dummy/app/assets/javascripts/application.js
74
- - test/dummy/app/assets/stylesheets/application.css
75
- - test/dummy/app/controllers/application_controller.rb
76
- - test/dummy/app/helpers/application_helper.rb
77
- - test/dummy/app/models/user.rb
78
- - test/dummy/app/views/layouts/application.html.erb
79
- - test/dummy/bin/bundle
80
- - test/dummy/bin/rails
81
- - test/dummy/bin/rake
82
- - test/dummy/config.ru
83
- - test/dummy/config/application.rb
84
- - test/dummy/config/boot.rb
85
- - test/dummy/config/database.yml
86
- - test/dummy/config/environment.rb
87
- - test/dummy/config/environments/development.rb
88
- - test/dummy/config/environments/production.rb
89
- - test/dummy/config/environments/test.rb
90
- - test/dummy/config/initializers/backtrace_silencers.rb
91
- - test/dummy/config/initializers/filter_parameter_logging.rb
92
- - test/dummy/config/initializers/inflections.rb
93
- - test/dummy/config/initializers/mime_types.rb
94
- - test/dummy/config/initializers/secret_token.rb
95
- - test/dummy/config/initializers/session_store.rb
96
- - test/dummy/config/initializers/wrap_parameters.rb
97
- - test/dummy/config/locales/en.yml
98
- - test/dummy/config/routes.rb
99
- - test/dummy/db/development.sqlite3
100
- - test/dummy/db/migrate/20131119215801_create_users.rb
101
- - test/dummy/db/schema.rb
102
- - test/dummy/db/test.sqlite3
103
- - test/dummy/log/development.log
104
- - test/dummy/log/test.log
105
- - test/dummy/public/404.html
106
- - test/dummy/public/422.html
107
- - test/dummy/public/500.html
108
- - test/dummy/public/favicon.ico
109
- - test/dummy/test/fixtures/users.yml
110
- - test/dummy/test/models/user_test.rb
111
- - test/test_helper.rb
112
147
  homepage: https://github.com/pdobb/conditional_validation
113
148
  licenses:
114
149
  - MIT
@@ -129,51 +164,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
129
164
  version: '0'
130
165
  requirements: []
131
166
  rubyforge_project:
132
- rubygems_version: 2.4.1
167
+ rubygems_version: 2.7.6
133
168
  signing_key:
134
169
  specification_version: 4
135
- summary: Add conditional validation flags to a model.
136
- test_files:
137
- - test/conditional_validation_test.rb
138
- - test/dummy/app/assets/javascripts/application.js
139
- - test/dummy/app/assets/stylesheets/application.css
140
- - test/dummy/app/controllers/application_controller.rb
141
- - test/dummy/app/helpers/application_helper.rb
142
- - test/dummy/app/models/user.rb
143
- - test/dummy/app/views/layouts/application.html.erb
144
- - test/dummy/bin/bundle
145
- - test/dummy/bin/rails
146
- - test/dummy/bin/rake
147
- - test/dummy/config/application.rb
148
- - test/dummy/config/boot.rb
149
- - test/dummy/config/database.yml
150
- - test/dummy/config/environment.rb
151
- - test/dummy/config/environments/development.rb
152
- - test/dummy/config/environments/production.rb
153
- - test/dummy/config/environments/test.rb
154
- - test/dummy/config/initializers/backtrace_silencers.rb
155
- - test/dummy/config/initializers/filter_parameter_logging.rb
156
- - test/dummy/config/initializers/inflections.rb
157
- - test/dummy/config/initializers/mime_types.rb
158
- - test/dummy/config/initializers/secret_token.rb
159
- - test/dummy/config/initializers/session_store.rb
160
- - test/dummy/config/initializers/wrap_parameters.rb
161
- - test/dummy/config/locales/en.yml
162
- - test/dummy/config/routes.rb
163
- - test/dummy/config.ru
164
- - test/dummy/db/development.sqlite3
165
- - test/dummy/db/migrate/20131119215801_create_users.rb
166
- - test/dummy/db/schema.rb
167
- - test/dummy/db/test.sqlite3
168
- - test/dummy/log/development.log
169
- - test/dummy/log/test.log
170
- - test/dummy/public/404.html
171
- - test/dummy/public/422.html
172
- - test/dummy/public/500.html
173
- - test/dummy/public/favicon.ico
174
- - test/dummy/Rakefile
175
- - test/dummy/README.rdoc
176
- - test/dummy/test/fixtures/users.yml
177
- - test/dummy/test/models/user_test.rb
178
- - test/test_helper.rb
179
- has_rdoc:
170
+ summary: ConditionalValidation simplifies adding validation flags to models.
171
+ test_files: []
@@ -1,20 +0,0 @@
1
- Copyright 2013 Paul Dobbins
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -1,51 +0,0 @@
1
- module ConditionalValidation
2
- module ValidationAccessor
3
- extend ActiveSupport::Concern
4
-
5
- module ClassMethods
6
- # Macro method for defining an attr_accessor and various
7
- # enable/disable/predicate methods that wrap the attr_acessor for
8
- # determining when to run a set of validation on an ActiveRecord model.
9
- #
10
- # @param args [*accessors] the section names for which to define
11
- # validation accessors for
12
- #
13
- # @example
14
- # class User
15
- # validation_accessor :address_attributes
16
- # end
17
- #
18
- # # => Defines the following methods on instances of the User class:
19
- # # enable_address_attributes_validation
20
- # # disable_address_attributes_validation
21
- # # validate_on_address_attributes?
22
- def validation_accessor(*accessors)
23
- attr_accessor *accessors.map { |accessor|
24
- "_#{accessor}_validation_accessor"
25
- }
26
-
27
- accessors.each do |accessor|
28
- class_eval <<-METHODS, __FILE__, __LINE__ + 1
29
- def enable_#{accessor}_validation
30
- self._#{accessor}_validation_accessor = true
31
- self
32
- end
33
-
34
- def disable_#{accessor}_validation
35
- self._#{accessor}_validation_accessor = false
36
- self
37
- end
38
-
39
- def validate_on_#{accessor}?
40
- !!_#{accessor}_validation_accessor
41
- end
42
- METHODS
43
- end
44
- end
45
- deprecate validation_accessor: :validation_flag,
46
- deprecator: ActiveSupport::Deprecation.new('1.0', 'Conditional Validation')
47
- end
48
- end
49
- end
50
-
51
- ActiveRecord::Base.send(:include, ConditionalValidation::ValidationAccessor)
@@ -1,101 +0,0 @@
1
- require 'test_helper'
2
-
3
- describe ConditionalValidation do
4
- describe "#validation_flag" do
5
- # User is defined in test/dummy/app/models/user.rb and is setup with
6
- # validation_flags already.
7
- subject { User.new }
8
-
9
- it "is available to ActiveRecord models by default" do
10
- class SomeClass < ActiveRecord::Base; end
11
- SomeClass.must_respond_to(:validation_flag)
12
- end
13
-
14
- it "defines validation_flag methods" do
15
- [:enable_flag_attributes_validation,
16
- :disable_flag_attributes_validation,
17
- :validate_on_flag_attributes?].each do |method|
18
- subject.must_respond_to(method)
19
- end
20
- end
21
-
22
- it "does not define validation_flag methods for unrequested validation_flags" do
23
- [:"enable_unknown_attributes_validation",
24
- :"disable_unknown_attributes_validation",
25
- :"validate_on_unknown_attributes?"].each do |method|
26
- subject.wont_respond_to(method)
27
- end
28
- end
29
-
30
- describe "validation_flag methods" do
31
- it "allows method chaining" do
32
- subject.enable_flag_attributes_validation.must_equal subject
33
- subject.disable_flag_attributes_validation.must_equal subject
34
- end
35
-
36
- it "requests validation when enabled" do
37
- refute subject.validate_on_flag_attributes?
38
-
39
- subject.enable_flag_attributes_validation
40
- assert subject.validate_on_flag_attributes?
41
- end
42
-
43
- it "does not request validation when disabled" do
44
- subject.enable_flag_attributes_validation
45
- assert subject.validate_on_flag_attributes?
46
-
47
- subject.disable_flag_attributes_validation
48
- refute subject.validate_on_flag_attributes?
49
- end
50
- end
51
- end
52
-
53
- describe "#validation_accessor" do
54
- # User is defined in test/dummy/app/models/user.rb and is setup with
55
- # validation_flags already.
56
- subject { User.new }
57
-
58
- it "is available to ActiveRecord models by default" do
59
- class SomeClass < ActiveRecord::Base; end
60
- SomeClass.must_respond_to(:validation_accessor)
61
- end
62
-
63
- it "defines validation_accessor methods" do
64
- [:enable_accessor_attributes_validation,
65
- :disable_accessor_attributes_validation,
66
- :validate_on_accessor_attributes?].each do |method|
67
- subject.must_respond_to(method)
68
- end
69
- end
70
-
71
- it "does not define validation_accessor methods for unrequested validation_accessors" do
72
- [:"enable_unknown_attributes_validation",
73
- :"disable_unknown_attributes_validation",
74
- :"validate_on_unknown_attributes?"].each do |method|
75
- subject.wont_respond_to(method)
76
- end
77
- end
78
-
79
- describe "validation_accessor methods" do
80
- it "allows method chaining" do
81
- subject.enable_accessor_attributes_validation.must_equal subject
82
- subject.disable_accessor_attributes_validation.must_equal subject
83
- end
84
-
85
- it "requests validation when enabled" do
86
- refute subject.validate_on_accessor_attributes?
87
-
88
- subject.enable_accessor_attributes_validation
89
- assert subject.validate_on_accessor_attributes?
90
- end
91
-
92
- it "does not request validation when disabled" do
93
- subject.enable_accessor_attributes_validation
94
- assert subject.validate_on_accessor_attributes?
95
-
96
- subject.disable_accessor_attributes_validation
97
- refute subject.validate_on_accessor_attributes?
98
- end
99
- end
100
- end
101
- end