conditional_validation 0.1.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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