shoulda-callback-matchers 1.0.0 → 1.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 36ecd3914a3443c58fd61371532b3e04003f5dea
4
- data.tar.gz: 63aa4153512b0f40d245c977a1ecf67ef74af9b0
3
+ metadata.gz: 89f6042a079fd2d5fef52ef390cf0c52dc28f3e1
4
+ data.tar.gz: da245bb62f6a4c956ac72708484821b09815a578
5
5
  SHA512:
6
- metadata.gz: 8d540b4fbf5a1e2fa7f8b94c55df9f02ffec8c31bc49875daac55be07b112b448b4296631277328bdf044352d4d43e4c3132814d06c429ccce33378604d1cb8f
7
- data.tar.gz: 2e6f4830c5af8fcedd2097736d799543eac77c35f72c5895920b22c5364e68be4f9021fd193e7e7fbcbd47e034d1a2e952a3a827afc1c2cc2f0eff29b4ef754b
6
+ metadata.gz: 7ad1fb3263ea065b34ad6f0fefa000c6f5adddfcd17c2711f98830cd268e6858564515c529aa72d33e5ff9a0c8d6d36f74cebffa73ea51b1b5221f48c81a7efe
7
+ data.tar.gz: 14d5f259cf09bb0642ef5765a7b16712585e1f64452fc2166000828f3a927247a0aaa1058a65e5274c755dd32333fbc7e2efd1dd37e10fc2eceb9ecb8aace35d
data/.gitignore CHANGED
@@ -13,7 +13,9 @@ tags
13
13
  tmp
14
14
  .bundle
15
15
  .git
16
+ .zedstate
16
17
  *.rbc
17
18
  *.gem
18
- gemfiles/*
19
+ gemfiles/.bundle/*
20
+ gemfiles/*.lock
19
21
  Gemfile.lock
@@ -2,15 +2,18 @@ rvm:
2
2
  - 1.9.3
3
3
  - 2.0.0
4
4
  - 2.1.1
5
- - rbx
5
+ - rbx-20mode
6
6
  - jruby-19mode
7
- - jruby-20mode
7
+ - jruby-head
8
8
 
9
- script: "bundle install && bundle exec rake"
9
+ script: "bundle exec rspec"
10
10
 
11
11
  gemfile:
12
- - gemfiles/4.1.gemfile
13
-
12
+ - gemfiles/rails_4.1.gemfile
13
+ - gemfiles/rails_4.0.gemfile
14
+ - gemfiles/rails_3.2.gemfile
15
+ - gemfiles/rails_3.1.gemfile
16
+
14
17
  matrix:
15
18
  allow_failures:
16
- - rvm: rbx
19
+ - rvm: rbx-20mode
data/Appraisals CHANGED
@@ -1,29 +1,23 @@
1
- appraise '4.1' do
2
- gem 'rails', '~>4.1'
1
+ appraise 'rails 4.1' do
2
+ gem 'rails', '~> 4.1.0'
3
3
  gem 'jquery-rails'
4
- gem 'sass-rails'
5
- end
6
-
7
- appraise '4.0' do
8
- gem 'rails', '~>4.0'
9
- gem 'jquery-rails'
10
- gem 'sass-rails'
4
+ gem 'sass-rails', '~> 4.0'
11
5
  end
12
6
 
13
- appraise '3.2' do
14
- gem 'rails', '~>3.2'
7
+ appraise 'rails 4.0' do
8
+ gem 'rails', '~> 4.0.0'
15
9
  gem 'jquery-rails'
16
10
  gem 'sass-rails'
17
11
  end
18
12
 
19
- appraise '3.1' do
20
- gem 'rails', '~>3.2'
13
+ appraise 'rails 3.2' do
14
+ gem 'rails', '~> 3.2.0'
21
15
  gem 'jquery-rails'
22
16
  gem 'sass-rails'
23
17
  end
24
18
 
25
- appraise '3.0' do
26
- gem 'rails', '~>3.2'
19
+ appraise 'rails 3.1' do
20
+ gem 'rails', '~> 3.1.0'
27
21
  gem 'jquery-rails'
28
22
  gem 'sass-rails'
29
23
  end
data/README.md CHANGED
@@ -13,6 +13,11 @@ Method Callbacks:
13
13
  it { should callback(:post_to_twitter).after(:create) }
14
14
  it { should callback(:evaluate_if_should_validate).before(:validation) }
15
15
  it { should callback(:add_some_convenience_accessors).after(:find) }
16
+
17
+ # with conditions
18
+
19
+ it { should callback(:assign_something).before(:create).if(:this_is_true) }
20
+ it { should callback(:destroy_something_else).before(:destroy).unless(:this_is_true) }
16
21
  end
17
22
 
18
23
  describe User do
@@ -46,6 +51,10 @@ Object Callbacks:
46
51
  it { should callback(CallbackClass).after(:create) }
47
52
  it { should callback(CallbackClass).before(:validation) }
48
53
  it { should callback(CallbackClass).after(:find) }
54
+
55
+ # with conditions
56
+ it { should callback(CallbackClass).before(:create).if(:this_is_true) }
57
+ it { should callback(CallbackClass).after(:find).unless(:is_this_true?) }
49
58
  end
50
59
 
51
60
  describe User do
@@ -0,0 +1,15 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "sqlite3", :platform=>:ruby
6
+ gem "activerecord-jdbc-adapter", :platform=>:jruby
7
+ gem "activerecord-jdbcsqlite3-adapter", :platform=>:jruby
8
+ gem "jdbc-sqlite3", :platform=>:jruby
9
+ gem "jruby-openssl", :platform=>:jruby
10
+ gem "therubyrhino", :platform=>:jruby
11
+ gem "rails", "~> 3.1.0"
12
+ gem "jquery-rails"
13
+ gem "sass-rails"
14
+
15
+ gemspec :path=>"../"
@@ -0,0 +1,15 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "sqlite3", :platform=>:ruby
6
+ gem "activerecord-jdbc-adapter", :platform=>:jruby
7
+ gem "activerecord-jdbcsqlite3-adapter", :platform=>:jruby
8
+ gem "jdbc-sqlite3", :platform=>:jruby
9
+ gem "jruby-openssl", :platform=>:jruby
10
+ gem "therubyrhino", :platform=>:jruby
11
+ gem "rails", "~> 3.2.0"
12
+ gem "jquery-rails"
13
+ gem "sass-rails"
14
+
15
+ gemspec :path=>"../"
@@ -0,0 +1,15 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "sqlite3", :platform=>:ruby
6
+ gem "activerecord-jdbc-adapter", :platform=>:jruby
7
+ gem "activerecord-jdbcsqlite3-adapter", :platform=>:jruby
8
+ gem "jdbc-sqlite3", :platform=>:jruby
9
+ gem "jruby-openssl", :platform=>:jruby
10
+ gem "therubyrhino", :platform=>:jruby
11
+ gem "rails", "~> 4.0.0"
12
+ gem "jquery-rails"
13
+ gem "sass-rails"
14
+
15
+ gemspec :path=>"../"
@@ -0,0 +1,15 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "sqlite3", :platform=>:ruby
6
+ gem "activerecord-jdbc-adapter", :platform=>:jruby
7
+ gem "activerecord-jdbcsqlite3-adapter", :platform=>:jruby
8
+ gem "jdbc-sqlite3", :platform=>:jruby
9
+ gem "jruby-openssl", :platform=>:jruby
10
+ gem "therubyrhino", :platform=>:jruby
11
+ gem "rails", "~> 4.1.0"
12
+ gem "jquery-rails"
13
+ gem "sass-rails", "~> 4.0"
14
+
15
+ gemspec :path=>"../"
@@ -24,8 +24,10 @@ module Shoulda # :nodoc:
24
24
  end
25
25
 
26
26
  class CallbackMatcher # :nodoc:
27
+ VALID_OPTIONAL_LIFECYCLES = [:validation, :commit, :rollback].freeze
28
+
27
29
  include RailsVersionHelper
28
-
30
+
29
31
  def initialize method
30
32
  @method = method
31
33
  end
@@ -35,7 +37,8 @@ module Shoulda # :nodoc:
35
37
  define_method hook do |lifecycle|
36
38
  @hook = hook
37
39
  @lifecycle = lifecycle
38
-
40
+ check_for_undefined_callbacks!
41
+
39
42
  self
40
43
  end
41
44
  end
@@ -50,9 +53,7 @@ module Shoulda # :nodoc:
50
53
  end
51
54
 
52
55
  def on optional_lifecycle
53
- unless @lifecycle == :validation
54
- raise UsageError.new("The .on option is only valid for the validation lifecycle and cannot be used with #{@lifecycle}, use with .before(:validation) or .after(:validation)")
55
- end
56
+ check_for_valid_optional_lifecycles!
56
57
 
57
58
  @optional_lifecycle = optional_lifecycle
58
59
 
@@ -96,8 +97,6 @@ module Shoulda # :nodoc:
96
97
  "callback #{@method} #{@hook} #{@lifecycle}#{optional_lifecycle_phrase}#{condition_phrase}"
97
98
  end
98
99
 
99
-
100
-
101
100
  private
102
101
 
103
102
  def check_preconditions!
@@ -106,7 +105,19 @@ module Shoulda # :nodoc:
106
105
 
107
106
  def check_lifecycle_present!
108
107
  unless @lifecycle
109
- raise UsageError.new("callback #{@method} can not be tested against an undefined lifecycle, use .before, .after or .around")
108
+ raise UsageError, "callback #{@method} can not be tested against an undefined lifecycle, use .before, .after or .around", caller
109
+ end
110
+ end
111
+
112
+ def check_for_undefined_callbacks!
113
+ if [:rollback, :commit].include?(@lifecycle) && @hook != :after
114
+ raise UsageError, "Can not callback before or around #{@lifecycle}, use after.", caller
115
+ end
116
+ end
117
+
118
+ def check_for_valid_optional_lifecycles!
119
+ unless VALID_OPTIONAL_LIFECYCLES.include?(@lifecycle)
120
+ raise UsageError, "The .on option is only valid for #{VALID_OPTIONAL_LIFECYCLES.to_sentence} and cannot be used with #{@lifecycle}, use with .before(:validation) or .after(:validation)", caller
110
121
  end
111
122
  end
112
123
 
@@ -164,15 +175,31 @@ module Shoulda # :nodoc:
164
175
 
165
176
  def lifecycle_context_string
166
177
  if rails_4?
167
- "[:#{@optional_lifecycle}].include? self.validation_context"
178
+ rails_4_lifecycle_context_string
168
179
  else
180
+ rails_3_lifecycle_context_string
181
+ end
182
+ end
183
+
184
+ def rails_3_lifecycle_context_string
185
+ if @lifecycle == :validation
169
186
  "self.validation_context == :#{@optional_lifecycle}"
187
+ else
188
+ "transaction_include_action?(:#{@optional_lifecycle})"
189
+ end
190
+ end
191
+
192
+ def rails_4_lifecycle_context_string
193
+ if @lifecycle == :validation
194
+ "[:#{@optional_lifecycle}].include? self.validation_context"
195
+ else
196
+ "transaction_include_any_action?([:#{@optional_lifecycle}])"
170
197
  end
171
198
  end
172
199
 
173
200
  def active_model_proc_matches_optional_lifecycle? if_conditions
174
201
  if_conditions.select{|i| i.is_a? Proc }.any? do |condition|
175
- condition.call OpenStruct.new validation_context: @optional_lifecycle
202
+ condition.call ValidationContext.new(@optional_lifecycle)
176
203
  end
177
204
  end
178
205
 
@@ -185,7 +212,7 @@ module Shoulda # :nodoc:
185
212
  end
186
213
 
187
214
  def callback_object subject, callback
188
- if rails_3? && !callback.filter.is_a?(Symbol)
215
+ if (rails_3? || rails_4_0?) && !callback.filter.is_a?(Symbol)
189
216
  subject.send("#{callback.filter}_object")
190
217
  else
191
218
  callback.filter
@@ -194,6 +221,7 @@ module Shoulda # :nodoc:
194
221
 
195
222
  end
196
223
 
224
+ ValidationContext = Struct.new :validation_context
197
225
  UsageError = Class.new NameError
198
226
  end
199
227
  end
@@ -8,7 +8,7 @@ module Shoulda
8
8
  end
9
9
 
10
10
  def rails_4_0?
11
- rails_4? && vminor_version_equals?(0)
11
+ rails_4? && minor_version_equals?(0)
12
12
  end
13
13
 
14
14
  def rails_4?
@@ -23,17 +23,17 @@ module Shoulda
23
23
 
24
24
  def major_version_equals? number
25
25
  if active_record?
26
- ActiveRecord::VERSION::MAJOR == number
26
+ ::ActiveRecord::VERSION::MAJOR == number
27
27
  else
28
- ActiveModel::VERSION::MAJOR == number
28
+ ::ActiveModel::VERSION::MAJOR == number
29
29
  end
30
30
  end
31
31
 
32
32
  def minor_version_equals? number
33
33
  if active_record?
34
- ActiveRecord::VERSION::MINOR == number
34
+ ::ActiveRecord::VERSION::MINOR == number
35
35
  else
36
- ActiveModel::VERSION::MINOR == number
36
+ ::ActiveModel::VERSION::MINOR == number
37
37
  end
38
38
  end
39
39
 
@@ -43,4 +43,4 @@ module Shoulda
43
43
  end
44
44
  end
45
45
  end
46
- end
46
+ end
@@ -1,7 +1,7 @@
1
1
  module Shoulda
2
2
  module Callback
3
3
  module Matchers
4
- VERSION = '1.0.0'.freeze
4
+ VERSION = '1.1.0'.freeze
5
5
  end
6
6
  end
7
7
  end
@@ -28,7 +28,7 @@ describe Shoulda::Callback::Matchers::ActiveModel do
28
28
  end
29
29
  it "should return a meaningful error when used with an optional lifecycle without the original lifecycle being validation" do
30
30
  lambda { callback(:dance!).after(:create).on(:save) }.should raise_error Shoulda::Callback::Matchers::ActiveModel::UsageError,
31
- "The .on option is only valid for the validation lifecycle and cannot be used with create, use with .before(:validation) or .after(:validation)"
31
+ "The .on option is only valid for validation, commit, and rollback and cannot be used with create, use with .before(:validation) or .after(:validation)"
32
32
  end
33
33
  it "should return a meaningful error when used without a defined lifecycle" do
34
34
  lambda { callback(@callback_object_class).matches? :foo }.should raise_error Shoulda::Callback::Matchers::ActiveModel::UsageError,
@@ -36,14 +36,17 @@ describe Shoulda::Callback::Matchers::ActiveModel do
36
36
  end
37
37
  it "should return a meaningful error when used with an optional lifecycle without the original lifecycle being validation" do
38
38
  lambda { callback(@callback_object_class).after(:create).on(:save) }.should raise_error Shoulda::Callback::Matchers::ActiveModel::UsageError,
39
- "The .on option is only valid for the validation lifecycle and cannot be used with create, use with .before(:validation) or .after(:validation)"
39
+ "The .on option is only valid for validation, commit, and rollback and cannot be used with create, use with .before(:validation) or .after(:validation)"
40
+ end
41
+ it "should return a meaningful error when used with rollback or commit and before" do
42
+ lambda { callback(@callback_object_class).before(:commit).on(:destroy) }.should raise_error Shoulda::Callback::Matchers::ActiveModel::UsageError,
43
+ "Can not callback before or around commit, use after."
40
44
  end
41
45
  end
42
46
 
43
47
  [:save, :create, :update, :destroy].each do |lifecycle|
44
48
  context "on #{lifecycle}" do
45
49
  before do
46
-
47
50
  @callback_object_class = define_model(:callback) do
48
51
  define_method("before_#{lifecycle}"){}
49
52
  define_method("after_#{lifecycle}"){}
@@ -354,8 +357,179 @@ describe Shoulda::Callback::Matchers::ActiveModel do
354
357
  end
355
358
  end
356
359
 
357
- [:initialize, :find, :touch, :rollback, :commit].each do |lifecycle|
360
+
361
+ [:rollback, :commit].each do |lifecycle|
362
+ context "on #{lifecycle}" do
363
+ before do
364
+ @callback_object_class = define_model(:callback) do
365
+ define_method("after_#{lifecycle}"){}
366
+ end
367
+
368
+ @callback_object_class2 = define_model(:callback2) do
369
+ define_method("after_#{lifecycle}"){}
370
+ end
371
+
372
+ callback_object = @callback_object_class.new
373
+ callback_object2 = @callback_object_class2.new
374
+
375
+ @callback_object_not_found_class = define_model(:callback_not_found) do
376
+ define_method("after_#{lifecycle}"){}
377
+ end
378
+ @model = define_model(:example, :attr => :string,
379
+ :other => :integer) do
380
+ send :"after_#{lifecycle}", :dance!, :if => :evaluates_to_false!
381
+ send :"after_#{lifecycle}", :shake!, :unless => :evaluates_to_true!
382
+ send :"after_#{lifecycle}", :dress!, :on => :create
383
+ send :"after_#{lifecycle}", :shriek!, :on => :update, :unless => :evaluates_to_true!
384
+ send :"after_#{lifecycle}", :pucker!, :on => :destroy, :if => :evaluates_to_false!
385
+ send :"after_#{lifecycle}", callback_object, :if => :evaluates_to_false!
386
+ send :"after_#{lifecycle}", callback_object, :unless => :evaluates_to_true!
387
+ send :"after_#{lifecycle}", callback_object, :on => :create
388
+ send :"after_#{lifecycle}", callback_object, :on => :update, :unless => :evaluates_to_true!
389
+ send :"after_#{lifecycle}", callback_object2, :on => :destroy, :if => :evaluates_to_false!
390
+ define_method(:dance!){}
391
+ define_method(:shake!){}
392
+ define_method(:dress!){}
393
+ define_method(:shriek!){}
394
+ define_method(:pucker!){}
395
+ end.new
396
+ end
358
397
 
398
+ context "as a simple callback test" do
399
+ it "should find the callback after the fact" do
400
+ @model.should callback(:shake!).after(lifecycle)
401
+ end
402
+ it "should not find callbacks that are not there" do
403
+ @model.should_not callback(:scream!).after(lifecycle)
404
+ end
405
+ it "should have a meaningful description" do
406
+ matcher = callback(:dance!).after(lifecycle)
407
+ matcher.description.should == "callback dance! after #{lifecycle}"
408
+ end
409
+
410
+ it "should find the callback after the fact" do
411
+ @model.should callback(@callback_object_class).after(lifecycle)
412
+ end
413
+ it "should not find callbacks that are not there" do
414
+ @model.should_not callback(@callback_object_not_found_class).after(lifecycle)
415
+ end
416
+ it "should have a meaningful description" do
417
+ matcher = callback(@callback_object_class).after(lifecycle)
418
+ matcher.description.should == "callback Callback after #{lifecycle}"
419
+ end
420
+ end
421
+
422
+ context "with additinal lifecycles defined" do
423
+ it "should find the callback after the fact on create" do
424
+ @model.should callback(:dress!).after(lifecycle).on(:create)
425
+ end
426
+ it "should find the callback after the fact on update" do
427
+ @model.should callback(:shriek!).after(lifecycle).on(:update)
428
+ end
429
+ it "should find the callback after the fact on save" do
430
+ @model.should callback(:pucker!).after(lifecycle).on(:destroy)
431
+ end
432
+ it "should not find a callback for pucker! after the fact on update" do
433
+ @model.should_not callback(:pucker!).after(lifecycle).on(:update)
434
+ end
435
+ it "should have a meaningful description" do
436
+ matcher = callback(:dance!).after(lifecycle).on(:update)
437
+ matcher.description.should == "callback dance! after #{lifecycle} on update"
438
+ end
439
+
440
+ it "should find the callback before the fact on create" do
441
+ @model.should callback(@callback_object_class).after(lifecycle).on(:create)
442
+ end
443
+ it "should find the callback after the fact on update" do
444
+ @model.should callback(@callback_object_class).after(lifecycle).on(:update)
445
+ end
446
+ it "should find the callback after the fact on save" do
447
+ @model.should callback(@callback_object_class2).after(lifecycle).on(:destroy)
448
+ end
449
+ it "should not find a callback for Callback after the fact on update" do
450
+ @model.should_not callback(@callback_object_class2).after(lifecycle).on(:update)
451
+ end
452
+ it "should have a meaningful description" do
453
+ matcher = callback(@callback_object_class).after(lifecycle).on(:update)
454
+ matcher.description.should == "callback Callback after #{lifecycle} on update"
455
+ end
456
+ end
457
+
458
+ context "with conditions" do
459
+ it "should match the if condition" do
460
+ @model.should callback(:dance!).after(lifecycle).if(:evaluates_to_false!)
461
+ end
462
+ it "should match the unless condition" do
463
+ @model.should callback(:shake!).after(lifecycle).unless(:evaluates_to_true!)
464
+ end
465
+ it "should not find callbacks not matching the conditions" do
466
+ @model.should_not callback(:giggle!).after(lifecycle).unless(:evaluates_to_false!)
467
+ end
468
+ it "should not find callbacks that are not there entirely" do
469
+ @model.should_not callback(:scream!).after(lifecycle).unless(:evaluates_to_false!)
470
+ end
471
+ it "should have a meaningful description" do
472
+ matcher = callback(:dance!).after(lifecycle).unless(:evaluates_to_false!)
473
+ matcher.description.should == "callback dance! after #{lifecycle} unless evaluates_to_false! evaluates to false"
474
+ end
475
+
476
+ it "should match the if condition" do
477
+ @model.should callback(@callback_object_class).after(lifecycle).if(:evaluates_to_false!)
478
+ end
479
+ it "should match the unless condition" do
480
+ @model.should callback(@callback_object_class).after(lifecycle).unless(:evaluates_to_true!)
481
+ end
482
+ it "should not find callbacks not matching the conditions" do
483
+ @model.should_not callback(@callback_object_class).after(lifecycle).unless(:evaluates_to_false!)
484
+ end
485
+ it "should not find callbacks that are not there entirely" do
486
+ @model.should_not callback(@callback_object_not_found_class).after(lifecycle).unless(:evaluates_to_false!)
487
+ end
488
+ it "should have a meaningful description" do
489
+ matcher = callback(@callback_object_class).after(lifecycle).unless(:evaluates_to_false!)
490
+ matcher.description.should == "callback Callback after #{lifecycle} unless evaluates_to_false! evaluates to false"
491
+ end
492
+ end
493
+
494
+ context "with conditions and additional lifecycles" do
495
+ it "should find the callback before the fact on create" do
496
+ @model.should callback(:dress!).after(lifecycle).on(:create)
497
+ end
498
+ it "should find the callback after the fact on update with the unless condition" do
499
+ @model.should callback(:shriek!).after(lifecycle).on(:update).unless(:evaluates_to_true!)
500
+ end
501
+ it "should find the callback after the fact on save with the if condition" do
502
+ @model.should callback(:pucker!).after(lifecycle).on(:destroy).if(:evaluates_to_false!)
503
+ end
504
+ it "should not find a callback for pucker! after the fact on save with the wrong condition" do
505
+ @model.should_not callback(:pucker!).after(lifecycle).on(:destroy).unless(:evaluates_to_false!)
506
+ end
507
+ it "should have a meaningful description" do
508
+ matcher = callback(:dance!).after(lifecycle).on(:save).unless(:evaluates_to_false!)
509
+ matcher.description.should == "callback dance! after #{lifecycle} on save unless evaluates_to_false! evaluates to false"
510
+ end
511
+
512
+ it "should find the callback before the fact on create" do
513
+ @model.should callback(@callback_object_class).after(lifecycle).on(:create)
514
+ end
515
+ it "should find the callback after the fact on update with the unless condition" do
516
+ @model.should callback(@callback_object_class).after(lifecycle).on(:update).unless(:evaluates_to_true!)
517
+ end
518
+ it "should find the callback after the fact on save with the if condition" do
519
+ @model.should callback(@callback_object_class2).after(lifecycle).on(:destroy).if(:evaluates_to_false!)
520
+ end
521
+ it "should not find a callback for Callback after the fact on save with the wrong condition" do
522
+ @model.should_not callback(@callback_object_class).after(lifecycle).on(:destroy).unless(:evaluates_to_false!)
523
+ end
524
+ it "should have a meaningful description" do
525
+ matcher = callback(@callback_object_class).after(lifecycle).on(:destroy).unless(:evaluates_to_false!)
526
+ matcher.description.should == "callback Callback after #{lifecycle} on destroy unless evaluates_to_false! evaluates to false"
527
+ end
528
+ end
529
+ end
530
+ end
531
+
532
+ [:initialize, :find, :touch].each do |lifecycle|
359
533
  context "on #{lifecycle}" do
360
534
  before do
361
535
 
metadata CHANGED
@@ -1,111 +1,111 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shoulda-callback-matchers
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Beat Richartz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-17 00:00:00.000000000 Z
11
+ date: 2014-05-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: appraisal
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0.5'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0.5'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: aruba
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '1.1'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.1'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rails
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '3'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '3'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rake
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ~>
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
89
  version: '10'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ~>
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '10'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rspec-rails
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ~>
101
+ - - "~>"
102
102
  - !ruby/object:Gem::Version
103
103
  version: '2'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ~>
108
+ - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: '2'
111
111
  description: Making callback tests easy on the fingers and eyes
@@ -115,8 +115,8 @@ extensions:
115
115
  - ext/mkrf_conf.rb
116
116
  extra_rdoc_files: []
117
117
  files:
118
- - .gitignore
119
- - .travis.yml
118
+ - ".gitignore"
119
+ - ".travis.yml"
120
120
  - Appraisals
121
121
  - CONTRIBUTING.md
122
122
  - Gemfile
@@ -125,6 +125,10 @@ files:
125
125
  - README.md
126
126
  - Rakefile
127
127
  - ext/mkrf_conf.rb
128
+ - gemfiles/rails_3.1.gemfile
129
+ - gemfiles/rails_3.2.gemfile
130
+ - gemfiles/rails_4.0.gemfile
131
+ - gemfiles/rails_4.1.gemfile
128
132
  - lib/shoulda-callback-matchers.rb
129
133
  - lib/shoulda/callback/matchers.rb
130
134
  - lib/shoulda/callback/matchers/active_model.rb
@@ -147,12 +151,12 @@ require_paths:
147
151
  - lib
148
152
  required_ruby_version: !ruby/object:Gem::Requirement
149
153
  requirements:
150
- - - '>='
154
+ - - ">="
151
155
  - !ruby/object:Gem::Version
152
156
  version: '0'
153
157
  required_rubygems_version: !ruby/object:Gem::Requirement
154
158
  requirements:
155
- - - '>='
159
+ - - ">="
156
160
  - !ruby/object:Gem::Version
157
161
  version: '0'
158
162
  requirements: []
@@ -166,3 +170,4 @@ test_files:
166
170
  - spec/spec_helper.rb
167
171
  - spec/support/class_builder.rb
168
172
  - spec/support/model_builder.rb
173
+ has_rdoc: