dm-validations 0.10.2 → 1.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. data/.gitignore +36 -0
  2. data/Gemfile +143 -0
  3. data/README.rdoc +52 -102
  4. data/Rakefile +3 -3
  5. data/VERSION +1 -1
  6. data/dm-validations.gemspec +126 -14
  7. data/lib/dm-validations.rb +78 -18
  8. data/lib/dm-validations/auto_validate.rb +27 -23
  9. data/lib/dm-validations/contextual_validators.rb +3 -3
  10. data/lib/dm-validations/formats/email.rb +3 -3
  11. data/lib/dm-validations/formats/url.rb +3 -3
  12. data/lib/dm-validations/support/context.rb +1 -1
  13. data/lib/dm-validations/validation_errors.rb +5 -7
  14. data/lib/dm-validations/validators/absent_field_validator.rb +13 -9
  15. data/lib/dm-validations/validators/acceptance_validator.rb +10 -7
  16. data/lib/dm-validations/validators/block_validator.rb +3 -3
  17. data/lib/dm-validations/validators/confirmation_validator.rb +10 -7
  18. data/lib/dm-validations/validators/format_validator.rb +14 -10
  19. data/lib/dm-validations/validators/generic_validator.rb +3 -3
  20. data/lib/dm-validations/validators/length_validator.rb +10 -7
  21. data/lib/dm-validations/validators/method_validator.rb +3 -3
  22. data/lib/dm-validations/validators/numeric_validator.rb +25 -14
  23. data/lib/dm-validations/validators/primitive_validator.rb +12 -8
  24. data/lib/dm-validations/validators/required_field_validator.rb +12 -9
  25. data/lib/dm-validations/validators/uniqueness_validator.rb +9 -6
  26. data/lib/dm-validations/validators/within_validator.rb +3 -3
  27. data/spec/fixtures/barcode.rb +10 -2
  28. data/spec/fixtures/basketball_court.rb +7 -7
  29. data/spec/fixtures/basketball_player.rb +3 -3
  30. data/spec/fixtures/beta_tester_account.rb +4 -4
  31. data/spec/fixtures/bill_of_landing.rb +7 -7
  32. data/spec/fixtures/boat_dock.rb +2 -2
  33. data/spec/fixtures/city.rb +1 -1
  34. data/spec/fixtures/company.rb +7 -7
  35. data/spec/fixtures/corporate_world.rb +24 -26
  36. data/spec/fixtures/country.rb +1 -1
  37. data/spec/fixtures/currency.rb +4 -4
  38. data/spec/fixtures/ethernet_frame.rb +5 -5
  39. data/spec/fixtures/event.rb +2 -2
  40. data/spec/fixtures/g3_concert.rb +3 -3
  41. data/spec/fixtures/jabberwock.rb +2 -2
  42. data/spec/fixtures/kayak.rb +2 -2
  43. data/spec/fixtures/lernean_hydra.rb +3 -3
  44. data/spec/fixtures/mathematical_function.rb +2 -2
  45. data/spec/fixtures/memory_object.rb +3 -3
  46. data/spec/fixtures/mittelschnauzer.rb +3 -3
  47. data/spec/fixtures/motor_launch.rb +1 -1
  48. data/spec/fixtures/page.rb +3 -3
  49. data/spec/fixtures/phone_number.rb +2 -2
  50. data/spec/fixtures/pirogue.rb +2 -2
  51. data/spec/fixtures/programming_language.rb +3 -3
  52. data/spec/fixtures/reservation.rb +5 -5
  53. data/spec/fixtures/scm_operation.rb +42 -45
  54. data/spec/fixtures/sms_message.rb +1 -1
  55. data/spec/fixtures/udp_packet.rb +3 -3
  56. data/spec/integration/absent_field_validator/absent_field_validator_spec.rb +6 -6
  57. data/spec/integration/acceptance_validator/acceptance_validator_spec.rb +3 -3
  58. data/spec/integration/automatic_validation/inferred_length_validation_spec.rb +5 -5
  59. data/spec/integration/automatic_validation/spec_helper.rb +1 -1
  60. data/spec/integration/block_validator/block_validator_spec.rb +2 -2
  61. data/spec/integration/conditional_validation/if_condition_spec.rb +3 -3
  62. data/spec/integration/confirmation_validator/confirmation_validator_spec.rb +3 -3
  63. data/spec/integration/datamapper_models/association_validation_spec.rb +5 -5
  64. data/spec/integration/datamapper_models/inheritance_spec.rb +6 -6
  65. data/spec/integration/duplicated_validations/duplicated_validations_spec.rb +3 -3
  66. data/spec/integration/format_validator/email_format_validator_spec.rb +6 -6
  67. data/spec/integration/format_validator/format_validator_spec.rb +8 -8
  68. data/spec/integration/format_validator/regexp_validator_spec.rb +4 -4
  69. data/spec/integration/format_validator/url_format_validator_spec.rb +4 -4
  70. data/spec/integration/length_validator/default_value_spec.rb +3 -3
  71. data/spec/integration/length_validator/equality_spec.rb +4 -4
  72. data/spec/integration/length_validator/error_message_spec.rb +3 -3
  73. data/spec/integration/length_validator/maximum_spec.rb +3 -3
  74. data/spec/integration/length_validator/minimum_spec.rb +3 -3
  75. data/spec/integration/length_validator/range_spec.rb +3 -3
  76. data/spec/integration/method_validator/method_validator_spec.rb +8 -8
  77. data/spec/integration/numeric_validator/equality_with_float_type_spec.rb +7 -7
  78. data/spec/integration/numeric_validator/equality_with_integer_type_spec.rb +5 -5
  79. data/spec/integration/numeric_validator/float_type_spec.rb +3 -3
  80. data/spec/integration/numeric_validator/gt_with_float_type_spec.rb +3 -3
  81. data/spec/integration/numeric_validator/gte_with_float_type_spec.rb +3 -3
  82. data/spec/integration/numeric_validator/lt_with_float_type_spec.rb +3 -3
  83. data/spec/integration/numeric_validator/lte_with_float_type_spec.rb +3 -3
  84. data/spec/integration/primitive_validator/primitive_validator_spec.rb +4 -4
  85. data/spec/integration/pure_ruby_objects/plain_old_ruby_object_validation_spec.rb +4 -4
  86. data/spec/integration/required_field_validator/association_spec.rb +19 -51
  87. data/spec/integration/required_field_validator/boolean_type_value_spec.rb +4 -1
  88. data/spec/integration/required_field_validator/date_type_value_spec.rb +4 -2
  89. data/spec/integration/required_field_validator/datetime_type_value_spec.rb +4 -2
  90. data/spec/integration/required_field_validator/float_type_value_spec.rb +4 -2
  91. data/spec/integration/required_field_validator/integer_type_value_spec.rb +4 -2
  92. data/spec/integration/required_field_validator/plain_old_ruby_object_spec.rb +6 -4
  93. data/spec/integration/required_field_validator/string_type_value_spec.rb +3 -1
  94. data/spec/integration/required_field_validator/text_type_value_spec.rb +3 -1
  95. data/spec/integration/shared/valid_and_invalid_model.rb +8 -0
  96. data/spec/integration/uniqueness_validator/uniqueness_validator_spec.rb +29 -25
  97. data/spec/integration/within_validator/within_validator_spec.rb +6 -6
  98. data/spec/public/resource_spec.rb +47 -9
  99. data/spec/spec_helper.rb +13 -27
  100. data/spec/unit/contextual_validators/emptiness_spec.rb +4 -4
  101. data/spec/unit/contextual_validators/execution_spec.rb +6 -6
  102. data/spec/unit/contextual_validators/spec_helper.rb +3 -3
  103. data/spec/unit/generic_validator/equality_operator_spec.rb +7 -7
  104. data/spec/unit/validation_errors/adding_spec.rb +2 -2
  105. data/spec/unit/validation_errors/emptiness_spec.rb +2 -2
  106. data/spec/unit/validation_errors/enumerable_spec.rb +2 -2
  107. data/tasks/local_gemfile.rake +18 -0
  108. data/tasks/spec.rake +0 -3
  109. metadata +157 -25
@@ -1,3 +1,50 @@
1
+ require 'dm-core'
2
+
3
+ begin
4
+
5
+ require 'active_support/core_ext/class/attribute_accessors'
6
+ require 'active_support/core_ext/object/blank'
7
+ require 'active_support/ordered_hash'
8
+
9
+ class Object
10
+ # If receiver is callable, calls it and
11
+ # returns result. If not, just returns receiver
12
+ # itself
13
+ #
14
+ # @return [Object]
15
+ def try_call(*args)
16
+ if self.respond_to?(:call)
17
+ self.call(*args)
18
+ else
19
+ self
20
+ end
21
+ end
22
+ end
23
+
24
+ rescue LoadError
25
+
26
+ require 'extlib/class'
27
+ require 'extlib/dictionary'
28
+ require 'extlib/blank'
29
+ require 'extlib/try_dup'
30
+ require 'extlib/object'
31
+
32
+ module ActiveSupport
33
+ OrderedHash = Dictionary
34
+ end
35
+
36
+ end
37
+
38
+ module DataMapper
39
+ class Property
40
+ def self.new(model, name, options = {}, type = nil)
41
+ property = super
42
+ property.model.auto_generate_validations(property)
43
+ property
44
+ end
45
+ end
46
+ end
47
+
1
48
  require 'dm-validations/exceptions'
2
49
  require 'dm-validations/validation_errors'
3
50
  require 'dm-validations/contextual_validators'
@@ -21,7 +68,8 @@ require 'dm-validations/support/context'
21
68
  require 'dm-validations/support/object'
22
69
 
23
70
  module DataMapper
24
- module Validate
71
+ module Validations
72
+
25
73
  Model.append_inclusions self
26
74
 
27
75
  extend Chainable
@@ -57,7 +105,7 @@ module DataMapper
57
105
 
58
106
  chainable do
59
107
  def save_self(*)
60
- return false unless validation_context_stack.empty? || valid?(current_validation_context)
108
+ return false unless !dirty_self? || validation_context_stack.empty? || valid?(current_validation_context)
61
109
  super
62
110
  end
63
111
  end
@@ -104,19 +152,19 @@ module DataMapper
104
152
  end
105
153
 
106
154
  module ClassMethods
107
- include DataMapper::Validate::ValidatesPresent
108
- include DataMapper::Validate::ValidatesAbsent
109
- include DataMapper::Validate::ValidatesIsConfirmed
110
- include DataMapper::Validate::ValidatesIsPrimitive
111
- include DataMapper::Validate::ValidatesIsAccepted
112
- include DataMapper::Validate::ValidatesFormat
113
- include DataMapper::Validate::ValidatesLength
114
- include DataMapper::Validate::ValidatesWithin
115
- include DataMapper::Validate::ValidatesIsNumber
116
- include DataMapper::Validate::ValidatesWithMethod
117
- include DataMapper::Validate::ValidatesWithBlock
118
- include DataMapper::Validate::ValidatesIsUnique
119
- include DataMapper::Validate::AutoValidate
155
+ include DataMapper::Validations::ValidatesPresence
156
+ include DataMapper::Validations::ValidatesAbsence
157
+ include DataMapper::Validations::ValidatesConfirmation
158
+ include DataMapper::Validations::ValidatesPrimitiveType
159
+ include DataMapper::Validations::ValidatesAcceptance
160
+ include DataMapper::Validations::ValidatesFormat
161
+ include DataMapper::Validations::ValidatesLength
162
+ include DataMapper::Validations::ValidatesWithin
163
+ include DataMapper::Validations::ValidatesNumericality
164
+ include DataMapper::Validations::ValidatesWithMethod
165
+ include DataMapper::Validations::ValidatesWithBlock
166
+ include DataMapper::Validations::ValidatesUniqueness
167
+ include DataMapper::Validations::AutoValidations
120
168
 
121
169
  # Return the set of contextual validators or create a new one
122
170
  #
@@ -124,6 +172,13 @@ module DataMapper
124
172
  @validators ||= ContextualValidators.new
125
173
  end
126
174
 
175
+ def inherited(base)
176
+ super
177
+ validators.contexts.each do |context, validators|
178
+ base.validators.context(context).concat(validators)
179
+ end
180
+ end
181
+
127
182
  private
128
183
 
129
184
  # Clean up the argument list and return a opts hash, including the
@@ -161,10 +216,10 @@ module DataMapper
161
216
  #
162
217
  # @param [Array<Symbol>] fields
163
218
  # Fields given to validation macro, example:
164
- # [:first_name, :last_name] in validates_present :first_name, :last_name
219
+ # [:first_name, :last_name] in validates_presence_of :first_name, :last_name
165
220
  #
166
221
  # @param [Class] klazz
167
- # Validator class, example: DataMapper::Validate::LengthValidator
222
+ # Validator class, example: DataMapper::Validations::LengthValidator
168
223
  def add_validator_to_context(opts, fields, validator_class)
169
224
  fields.each do |field|
170
225
  validator = validator_class.new(field, opts.dup)
@@ -178,5 +233,10 @@ module DataMapper
178
233
  end
179
234
  end
180
235
  end # module ClassMethods
181
- end # module Validate
236
+ end # module Validations
237
+
238
+ # Provide a const alias for backward compatibility with plugins
239
+ # This is scheduled to go away though, definitely before 1.0
240
+ Validate = Validations
241
+
182
242
  end # module DataMapper
@@ -1,11 +1,11 @@
1
1
  module DataMapper
2
2
  class Property
3
3
  # for options_with_message
4
- OPTIONS << :message << :messages << :set
4
+ accept_options :message, :messages, :set, :validates, :auto_validation, :format
5
5
  end
6
6
 
7
- module Validate
8
- module AutoValidate
7
+ module Validations
8
+ module AutoValidations
9
9
  @disable_auto_validations = false
10
10
 
11
11
  # adds message for validator
@@ -41,7 +41,7 @@ module DataMapper
41
41
  #
42
42
  # :required => true
43
43
  # Setting the option :required to true causes a
44
- # validates_present validator to be automatically created on
44
+ # validates_presence_of validator to be automatically created on
45
45
  # the property
46
46
  #
47
47
  # :length => 20
@@ -59,12 +59,12 @@ module DataMapper
59
59
  # validator to be automatically created on the property
60
60
  #
61
61
  # Integer type
62
- # Using a Integer type causes a validates_is_number
62
+ # Using a Integer type causes a validates_numericality_of
63
63
  # validator to be created for the property. integer_only
64
64
  # is set to true
65
65
  #
66
66
  # BigDecimal or Float type
67
- # Using a Integer type causes a validates_is_number
67
+ # Using a Integer type causes a validates_numericality_of
68
68
  # validator to be created for the property. integer_only
69
69
  # is set to false, and precision/scale match the property
70
70
  #
@@ -127,18 +127,18 @@ module DataMapper
127
127
  def infer_presence_validation_for(property, options)
128
128
  return if skip_presence_validation?(property)
129
129
 
130
- validates_present property.name, options_with_message(options, property, :presence)
130
+ validates_presence_of property.name, options_with_message(options, property, :presence)
131
131
  end
132
132
 
133
133
  def infer_length_validation_for(property, options)
134
- return unless [ String, DataMapper::Types::Text ].include?(property.type)
134
+ return unless [ DataMapper::Property::String, DataMapper::Property::Text ].include?(property.class)
135
135
 
136
- case length = property.options.fetch(:length, DataMapper::Property::DEFAULT_LENGTH)
136
+ case length = property.options.fetch(:length, DataMapper::Property::String::DEFAULT_LENGTH)
137
137
  when Range then options[:within] = length
138
138
  else options[:maximum] = length
139
139
  end
140
140
 
141
- validates_length property.name, options_with_message(options, property, :length)
141
+ validates_length_of property.name, options_with_message(options, property, :length)
142
142
  end
143
143
 
144
144
  def infer_format_validation_for(property, options)
@@ -146,7 +146,7 @@ module DataMapper
146
146
 
147
147
  options[:with] = property.options[:format]
148
148
 
149
- validates_format property.name, options_with_message(options, property, :format)
149
+ validates_format_of property.name, options_with_message(options, property, :format)
150
150
  end
151
151
 
152
152
  def infer_uniqueness_validation_for(property, options)
@@ -156,9 +156,9 @@ module DataMapper
156
156
  when Array, Symbol
157
157
  options[:scope] = Array(value)
158
158
 
159
- validates_is_unique property.name, options_with_message(options, property, :is_unique)
159
+ validates_uniqueness_of property.name, options_with_message(options, property, :is_unique)
160
160
  when TrueClass
161
- validates_is_unique property.name, options_with_message(options, property, :is_unique)
161
+ validates_uniqueness_of property.name, options_with_message(options, property, :is_unique)
162
162
  end
163
163
  end
164
164
 
@@ -171,23 +171,27 @@ module DataMapper
171
171
  end
172
172
 
173
173
  def infer_type_validation_for(property, options)
174
- options[:gte] = property.min if property.min
175
- options[:lte] = property.max if property.max
174
+ return if property.custom?
176
175
 
177
- if Integer == property.type
176
+ if property.kind_of?(Property::Numeric)
177
+ options[:gte] = property.min if property.min
178
+ options[:lte] = property.max if property.max
179
+ end
180
+
181
+ if Integer == property.primitive
178
182
  options[:integer_only] = true
179
183
 
180
- validates_is_number property.name, options_with_message(options, property, :is_number)
181
- elsif BigDecimal == property.type || Float == property.type
184
+ validates_numericality_of property.name, options_with_message(options, property, :is_number)
185
+ elsif BigDecimal == property.primitive || Float == property.primitive
182
186
  options[:precision] = property.precision
183
187
  options[:scale] = property.scale
184
188
 
185
- validates_is_number property.name, options_with_message(options, property, :is_number)
186
- elsif !property.custom?
189
+ validates_numericality_of property.name, options_with_message(options, property, :is_number)
190
+ else
187
191
  # We only need this in the case we don't already
188
192
  # have a numeric validator, because otherwise
189
193
  # it will cause duplicate validation errors
190
- validates_is_primitive property.name, options_with_message(options, property, :is_primitive)
194
+ validates_primitive_type_of property.name, options_with_message(options, property, :is_primitive)
191
195
  end
192
196
  end
193
197
 
@@ -196,6 +200,6 @@ module DataMapper
196
200
  def skip_presence_validation?(property)
197
201
  property.allow_blank? || property.serial?
198
202
  end
199
- end # module AutoValidate
200
- end # module Validate
203
+ end # module AutoValidations
204
+ end # module Validations
201
205
  end # module DataMapper
@@ -1,7 +1,7 @@
1
1
  require 'forwardable'
2
2
 
3
3
  module DataMapper
4
- module Validate
4
+ module Validations
5
5
 
6
6
  ##
7
7
  #
@@ -31,7 +31,7 @@ module DataMapper
31
31
  #
32
32
  # @param [String]
33
33
  # Context name for which return validators
34
- # @return [Array<DataMapper::Validate::GenericValidator>]
34
+ # @return [Array<DataMapper::Validations::GenericValidator>]
35
35
  # An array of validators
36
36
  def context(name)
37
37
  contexts[name] ||= []
@@ -60,5 +60,5 @@ module DataMapper
60
60
  end
61
61
 
62
62
  end # module ContextualValidators
63
- end # module Validate
63
+ end # module Validations
64
64
  end # module DataMapper
@@ -1,12 +1,12 @@
1
1
  # encoding: binary
2
2
 
3
3
  module DataMapper
4
- module Validate
4
+ module Validations
5
5
  module Format
6
6
  module Email
7
7
 
8
8
  def self.included(base)
9
- DataMapper::Validate::FormatValidator::FORMATS.merge!(
9
+ DataMapper::Validations::FormatValidator::FORMATS.merge!(
10
10
  :email_address => [ EmailAddress, lambda { |field, value| '%s is not a valid email address'.t(value) }]
11
11
  )
12
12
  end
@@ -39,5 +39,5 @@ module DataMapper
39
39
 
40
40
  end # module Email
41
41
  end # module Format
42
- end # module Validate
42
+ end # module Validations
43
43
  end # module DataMapper
@@ -1,12 +1,12 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module DataMapper
4
- module Validate
4
+ module Validations
5
5
  module Format
6
6
  module Url
7
7
 
8
8
  def self.included(base)
9
- DataMapper::Validate::FormatValidator::FORMATS.merge!(
9
+ DataMapper::Validations::FormatValidator::FORMATS.merge!(
10
10
  :url => [ Url, lambda { |field, value| '%s is not a valid URL'.t(value) }]
11
11
  )
12
12
  end
@@ -18,5 +18,5 @@ module DataMapper
18
18
 
19
19
  end # module Url
20
20
  end # module Format
21
- end # module Validate
21
+ end # module Validations
22
22
  end # module DataMapper
@@ -1,5 +1,5 @@
1
1
  module DataMapper
2
- module Validate
2
+ module Validations
3
3
 
4
4
  # Module with validation context functionality.
5
5
  #
@@ -1,7 +1,5 @@
1
- require 'extlib/dictionary'
2
-
3
1
  module DataMapper
4
- module Validate
2
+ module Validations
5
3
 
6
4
  ##
7
5
  #
@@ -40,7 +38,7 @@ module DataMapper
40
38
  cattr_writer :default_error_messages
41
39
 
42
40
  def self.default_error_message(key, field, *values)
43
- field = Extlib::Inflection.humanize(field)
41
+ field = ActiveSupport::Inflector.humanize(field)
44
42
  @@default_error_messages[key] % [field, *values].flatten
45
43
  end
46
44
 
@@ -48,7 +46,7 @@ module DataMapper
48
46
 
49
47
  def initialize(resource)
50
48
  @resource = resource
51
- @errors = Dictionary.new { |h,k| h[k] = [] }
49
+ @errors = ActiveSupport::OrderedHash.new { |h,k| h[k] = [] }
52
50
  end
53
51
 
54
52
  # Clear existing validation errors.
@@ -87,7 +85,7 @@ module DataMapper
87
85
  # Return validation errors for a particular field_name.
88
86
  #
89
87
  # @param [Symbol] field_name the name of the field you want an error for
90
- # @return [Array<DataMapper::Validate::Error>]
88
+ # @return [Array<DataMapper::Validations::Error>]
91
89
  # array of validation errors or empty array, if there are no errors on given field
92
90
  def on(field_name)
93
91
  errors_for_field = errors[field_name]
@@ -115,5 +113,5 @@ module DataMapper
115
113
  end
116
114
 
117
115
  end # class ValidationErrors
118
- end # module Validate
116
+ end # module Validations
119
117
  end # module DataMapper
@@ -1,11 +1,11 @@
1
1
  module DataMapper
2
- module Validate
2
+ module Validations
3
3
 
4
4
  ##
5
5
  #
6
6
  # @author Guy van den Berg
7
7
  # @since 0.9
8
- class AbsentFieldValidator < GenericValidator
8
+ class AbsenceValidator < GenericValidator
9
9
  def call(target)
10
10
  return true if target.validation_property_value(field_name).blank?
11
11
 
@@ -14,9 +14,11 @@ module DataMapper
14
14
 
15
15
  false
16
16
  end
17
- end # class AbsentFieldValidator
17
+ end # class AbsenceValidator
18
18
 
19
- module ValidatesAbsent
19
+ module ValidatesAbsence
20
+
21
+ extend Deprecate
20
22
 
21
23
  ##
22
24
  # Validates that the specified attribute is "blank" via the attribute's
@@ -36,18 +38,20 @@ module DataMapper
36
38
  # property :another_unwanted, String
37
39
  # property :yet_again, String
38
40
  #
39
- # validates_absent :unwanted_attribute
40
- # validates_absent :another_unwanted, :yet_again
41
+ # validates_absence_of :unwanted_attribute
42
+ # validates_absence_of :another_unwanted, :yet_again
41
43
  #
42
44
  # # a call to valid? will return false unless
43
45
  # # all three attributes are blank
44
46
  # end
45
47
  #
46
- def validates_absent(*fields)
48
+ def validates_absence_of(*fields)
47
49
  opts = opts_from_validator_args(fields)
48
- add_validator_to_context(opts, fields, DataMapper::Validate::AbsentFieldValidator)
50
+ add_validator_to_context(opts, fields, DataMapper::Validations::AbsenceValidator)
49
51
  end
50
52
 
53
+ deprecate :validates_absent, :validates_absence_of
54
+
51
55
  end # module ValidatesAbsent
52
- end # module Validate
56
+ end # module Validations
53
57
  end # module DataMapper
@@ -1,5 +1,5 @@
1
1
  module DataMapper
2
- module Validate
2
+ module Validations
3
3
 
4
4
  ##
5
5
  #
@@ -34,7 +34,8 @@ module DataMapper
34
34
  end
35
35
  end # class AcceptanceValidator
36
36
 
37
- module ValidatesIsAccepted
37
+ module ValidatesAcceptance
38
+ extend Deprecate
38
39
 
39
40
  ##
40
41
  # Validates that the attributes's value is in the set of accepted values.
@@ -52,19 +53,21 @@ module DataMapper
52
53
  #
53
54
  # property :license_agreement_accepted, String
54
55
  # property :terms_accepted, String
55
- # validates_is_accepted :license_agreement, :accept => "1"
56
- # validates_is_accepted :terms_accepted, :allow_nil => false
56
+ # validates_acceptance_of :license_agreement, :accept => "1"
57
+ # validates_acceptance_of :terms_accepted, :allow_nil => false
57
58
  #
58
59
  # # a call to valid? will return false unless:
59
60
  # # license_agreement is nil or "1"
60
61
  # # and
61
62
  # # terms_accepted is one of ["1", 1, "true", true, "t"]
62
63
  #
63
- def validates_is_accepted(*fields)
64
+ def validates_acceptance_of(*fields)
64
65
  opts = opts_from_validator_args(fields)
65
- add_validator_to_context(opts, fields, DataMapper::Validate::AcceptanceValidator)
66
+ add_validator_to_context(opts, fields, DataMapper::Validations::AcceptanceValidator)
66
67
  end
67
68
 
69
+ deprecate :validates_is_accepted, :validates_acceptance_of
70
+
68
71
  end # module ValidatesIsAccepted
69
- end # module Validate
72
+ end # module Validations
70
73
  end # module DataMapper