durran-validatable 1.8.4 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,5 @@
1
1
  ---
2
- :major: 1
3
- :minor: 8
4
- :patch: 4
2
+ :major: 2
3
+ :minor: 0
4
+ :patch: 0
5
5
  :build:
@@ -353,7 +353,7 @@ module Validatable
353
353
  # attr_accessor :name
354
354
  # end
355
355
  #
356
- def before_validation(&block)
356
+ def before_validate(&block)
357
357
  before_validations << block
358
358
  end
359
359
  end
@@ -4,42 +4,38 @@ module Validatable
4
4
  klass.extend Validatable::Macros
5
5
  klass.class_eval do
6
6
  include ActiveSupport::Callbacks
7
- define_callbacks :validate, :validate_on_create, :validate_on_update
7
+ define_callbacks :before_validation, :after_validation
8
8
  end
9
9
  end
10
-
10
+
11
11
  # call-seq: valid?
12
12
  #
13
13
  # Returns true if no errors were added otherwise false. Only executes validations that have no :groups option specified
14
14
  def valid?
15
15
  valid_for_group?(nil)
16
16
  end
17
-
17
+
18
18
  # call-seq: errors
19
19
  #
20
20
  # Returns the Errors object that holds all information about attribute error messages.
21
21
  def errors
22
22
  @errors ||= Validatable::Errors.new
23
23
  end
24
-
24
+
25
25
  def valid_for_group?(group) #:nodoc:
26
26
  run_before_validations
27
27
  errors.clear
28
- run_callbacks(:validate)
29
-
30
- if respond_to?(:new?)
31
- new? ? run_callbacks(:validate_on_create) : run_callbacks(:validate_on_update)
32
- end
33
-
28
+ run_callbacks(:before_validation)
34
29
  self.class.validate_children(self, group)
35
30
  self.validate_group(group)
31
+ run_callbacks(:after_validation)
36
32
  errors.empty?
37
33
  end
38
-
34
+
39
35
  def times_validated(key) #:nodoc:
40
36
  times_validated_hash[key] || 0
41
37
  end
42
-
38
+
43
39
  def increment_times_validated_for(validation) #:nodoc:
44
40
  if validation.key != nil
45
41
  if times_validated_hash[validation.key].nil?
@@ -86,31 +82,31 @@ module Validatable
86
82
  increment_times_validated_for(validation)
87
83
  validation.run_after_validate(validation_result, self, validation.attribute)
88
84
  end
89
-
85
+
90
86
  def run_before_validations #:nodoc:
91
87
  self.class.all_before_validations.each do |block|
92
88
  instance_eval &block
93
89
  end
94
90
  end
95
-
91
+
96
92
  def add_error(attribute, message) #:nodoc:
97
93
  self.class.add_error(self, attribute, message)
98
94
  end
99
-
95
+
100
96
  def validations_for_level_and_group(level, group) #:nodoc:
101
97
  validations_for_level = self.all_validations.select { |validation| validation.level == level }
102
98
  return validations_for_level.select { |validation| validation.groups.empty? } if group.nil?
103
99
  validations_for_level.select { |validation| validation.groups.include?(group) }
104
100
  end
105
-
101
+
106
102
  def all_validations #:nodoc:
107
103
  res = self.class.validations_to_include.inject(self.class.all_validations) do |result, included_validation_class|
108
104
  result += self.send(included_validation_class.attribute).all_validations
109
105
  result
110
106
  end
111
107
  end
112
-
108
+
113
109
  def validation_levels #:nodoc:
114
110
  self.class.all_validations.inject([1]) { |result, validation| result << validation.level }.uniq.sort
115
111
  end
116
- end
112
+ end
@@ -9,7 +9,7 @@ functional_tests do
9
9
  end
10
10
  klass = Class.new do
11
11
  include Validatable
12
- include_validations_from :child
12
+ include_validations_from :child
13
13
  define_method :child do
14
14
  child_class
15
15
  end
@@ -19,7 +19,7 @@ functional_tests do
19
19
  instance.valid?
20
20
  instance.errors.on(:name)
21
21
  end
22
-
22
+
23
23
  expect "can't be blank" do
24
24
  child_class = Module.new do
25
25
  include Validatable
@@ -28,7 +28,7 @@ functional_tests do
28
28
  klass = Class.new do
29
29
  include Validatable
30
30
  validates_presence_of :address
31
- include_validations_from :child
31
+ include_validations_from :child
32
32
  define_method :child do
33
33
  child_class
34
34
  end
@@ -38,21 +38,21 @@ functional_tests do
38
38
  instance.valid?
39
39
  instance.errors.on(:address)
40
40
  end
41
-
41
+
42
42
  expect :is_set do
43
43
  klass = Class.new do
44
44
  include Validatable
45
45
  attr_accessor :result
46
- before_validation do
46
+ before_validate do
47
47
  self.result = :is_set
48
48
  end
49
49
  end
50
-
50
+
51
51
  instance = klass.new
52
52
  instance.valid?
53
53
  instance.result
54
54
  end
55
-
55
+
56
56
  expect :is_set do
57
57
  klass = Class.new do
58
58
  include Validatable
@@ -77,7 +77,7 @@ functional_tests do
77
77
  end
78
78
  subsubclass.new.valid?
79
79
  end
80
-
80
+
81
81
  expect false do
82
82
  klass = Class.new do
83
83
  include Validatable
@@ -88,7 +88,7 @@ functional_tests do
88
88
  end
89
89
  subclass.new.valid?
90
90
  end
91
-
91
+
92
92
  expect true do
93
93
  klass = Class.new do
94
94
  include Validatable
@@ -129,7 +129,7 @@ functional_tests do
129
129
  end
130
130
  klass = Class.new do
131
131
  include Validatable
132
- include_errors_from :child
132
+ include_errors_from :child
133
133
  define_method :child do
134
134
  child_class.new
135
135
  end
@@ -148,7 +148,7 @@ functional_tests do
148
148
  end
149
149
  klass = Class.new do
150
150
  include Validatable
151
- include_errors_from :child
151
+ include_errors_from :child
152
152
  define_method :child do
153
153
  child_class.new
154
154
  end
@@ -171,7 +171,7 @@ functional_tests do
171
171
  extend Forwardable
172
172
  def_delegator :child, :name
173
173
  validates_true_for :name, :logic => lambda { false }, :level => 2, :message => "invalid message"
174
- include_errors_from :child
174
+ include_errors_from :child
175
175
  define_method :child do
176
176
  @child ||= child_class.new
177
177
  end
@@ -191,7 +191,7 @@ functional_tests do
191
191
  klass = Class.new do
192
192
  include Validatable
193
193
  validates_true_for :address, :logic => lambda { false }, :level => 1, :message => "invalid message"
194
- include_errors_from :child
194
+ include_errors_from :child
195
195
  define_method :child do
196
196
  @child ||= child_class.new
197
197
  end
@@ -255,13 +255,13 @@ functional_tests do
255
255
  instance = klass.new
256
256
  instance.valid?
257
257
  end
258
-
258
+
259
259
  test ':if with symbol should work' do
260
260
  klass = Class.new do
261
261
  include Validatable
262
262
  attr_accessor :name, :name_required
263
263
  validates_presence_of :name, :if => :name_required?
264
-
264
+
265
265
  def name_required?
266
266
  name_required
267
267
  end
@@ -273,13 +273,13 @@ functional_tests do
273
273
  assert !instance.valid?
274
274
  assert_equal "can't be blank", instance.errors.on(:name)
275
275
  end
276
-
276
+
277
277
  test ':if with string should work' do
278
278
  klass = Class.new do
279
279
  include Validatable
280
280
  attr_accessor :name, :name_required
281
281
  validates_presence_of :name, :if => 'name_required?'
282
-
282
+
283
283
  def name_required?
284
284
  name_required
285
285
  end
@@ -430,7 +430,7 @@ functional_tests do
430
430
  instance.valid?
431
431
  instance.errors.on(:address)
432
432
  end
433
-
433
+
434
434
  expect "Mod::Klass/Validatable::ValidatesPresenceOf/name" do
435
435
  module Mod
436
436
  class Klass
@@ -448,7 +448,7 @@ functional_tests do
448
448
  end
449
449
  klass.validations.first.key
450
450
  end
451
-
451
+
452
452
  expect "can't be blank" do
453
453
  klass = Class.new do
454
454
  include Validatable
@@ -470,61 +470,13 @@ functional_tests do
470
470
  instance.validate_only("presence_of/name")
471
471
  instance.errors.on(:address)
472
472
  end
473
-
473
+
474
474
  test 'validate callback' do
475
475
  klass = Class.new do
476
476
  include Validatable
477
477
  attr_accessor :action
478
- validate :action_presence
479
-
480
- private
481
- def action_presence
482
- errors.add(:action, 'is invalid') if action.blank?
483
- end
484
- end
485
- instance = klass.new
486
- instance.valid?
487
- assert_equal 'is invalid', instance.errors.on(:action)
488
-
489
- instance.action = 'walk'
490
- instance.valid?
491
- assert_nil instance.errors.on(:action)
492
- end
493
-
494
- test 'validate on create callback for new record' do
495
- klass = Class.new do
496
- include Validatable
497
- attr_accessor :action
498
- validate_on_create :action_presence
499
-
500
- def new?
501
- true
502
- end
503
-
504
- private
505
- def action_presence
506
- errors.add(:action, 'is invalid') if action.blank?
507
- end
508
- end
509
- instance = klass.new
510
- instance.valid?
511
- assert_equal 'is invalid', instance.errors.on(:action)
512
-
513
- instance.action = 'walk'
514
- instance.valid?
515
- assert_nil instance.errors.on(:action)
516
- end
478
+ before_validation :action_presence
517
479
 
518
- test 'validate on create callback for not new record' do
519
- klass = Class.new do
520
- include Validatable
521
- attr_accessor :action
522
- validate_on_create :action_presence
523
-
524
- def new?
525
- false
526
- end
527
-
528
480
  private
529
481
  def action_presence
530
482
  errors.add(:action, 'is invalid') if action.blank?
@@ -532,58 +484,11 @@ functional_tests do
532
484
  end
533
485
  instance = klass.new
534
486
  instance.valid?
535
- assert_nil instance.errors.on(:action)
536
-
537
- instance.action = 'walk'
538
- instance.valid?
539
- assert_nil instance.errors.on(:action)
540
- end
487
+ assert_equal 'is invalid', instance.errors.on(:action)
541
488
 
542
- test 'validate on update callback for new record' do
543
- klass = Class.new do
544
- include Validatable
545
- attr_accessor :action
546
- validate_on_update :action_presence
547
-
548
- def new?
549
- true
550
- end
551
-
552
- private
553
- def action_presence
554
- errors.add(:action, 'is invalid') if action.blank?
555
- end
556
- end
557
- instance = klass.new
558
- instance.valid?
559
- assert_nil instance.errors.on(:action)
560
-
561
489
  instance.action = 'walk'
562
490
  instance.valid?
563
491
  assert_nil instance.errors.on(:action)
564
492
  end
565
493
 
566
- test 'validate on update callback for not new record' do
567
- klass = Class.new do
568
- include Validatable
569
- attr_accessor :action
570
- validate_on_update :action_presence
571
-
572
- def new?
573
- false
574
- end
575
-
576
- private
577
- def action_presence
578
- errors.add(:action, 'is invalid') if action.blank?
579
- end
580
- end
581
- instance = klass.new
582
- instance.valid?
583
- assert_equal 'is invalid', instance.errors.on(:action)
584
-
585
- instance.action = 'walk'
586
- instance.valid?
587
- assert_nil instance.errors.on(:action)
588
- end
589
494
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: durran-validatable
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.4
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jay Fields
@@ -11,7 +11,7 @@ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
13
 
14
- date: 2009-12-26 00:00:00 -05:00
14
+ date: 2010-01-09 00:00:00 -05:00
15
15
  default_executable:
16
16
  dependencies: []
17
17