shoulda-matchers 2.2.0 → 2.3.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 (35) hide show
  1. data/.travis.yml +3 -0
  2. data/Gemfile.lock +1 -1
  3. data/NEWS.md +25 -1
  4. data/README.md +1 -2
  5. data/gemfiles/3.0.gemfile.lock +1 -1
  6. data/gemfiles/3.1.gemfile.lock +1 -1
  7. data/gemfiles/3.2.gemfile.lock +1 -1
  8. data/lib/shoulda/matchers/action_controller.rb +1 -0
  9. data/lib/shoulda/matchers/action_controller/rescue_from_matcher.rb +81 -0
  10. data/lib/shoulda/matchers/active_model/comparison_matcher.rb +1 -1
  11. data/lib/shoulda/matchers/active_model/disallow_value_matcher.rb +5 -0
  12. data/lib/shoulda/matchers/active_model/ensure_inclusion_of_matcher.rb +15 -1
  13. data/lib/shoulda/matchers/active_model/validate_acceptance_of_matcher.rb +1 -1
  14. data/lib/shoulda/matchers/active_model/validate_numericality_of_matcher.rb +1 -1
  15. data/lib/shoulda/matchers/active_model/validate_uniqueness_of_matcher.rb +2 -8
  16. data/lib/shoulda/matchers/active_model/validation_matcher.rb +2 -0
  17. data/lib/shoulda/matchers/active_record.rb +5 -0
  18. data/lib/shoulda/matchers/active_record/association_matcher.rb +90 -113
  19. data/lib/shoulda/matchers/active_record/association_matchers/counter_cache_matcher.rb +35 -0
  20. data/lib/shoulda/matchers/active_record/association_matchers/dependent_matcher.rb +35 -0
  21. data/lib/shoulda/matchers/active_record/association_matchers/model_reflector.rb +37 -0
  22. data/lib/shoulda/matchers/active_record/association_matchers/order_matcher.rb +35 -0
  23. data/lib/shoulda/matchers/active_record/association_matchers/through_matcher.rb +57 -0
  24. data/lib/shoulda/matchers/version.rb +1 -1
  25. data/spec/shoulda/matchers/action_controller/rescue_from_matcher_spec.rb +63 -0
  26. data/spec/shoulda/matchers/active_model/allow_value_matcher_spec.rb +1 -1
  27. data/spec/shoulda/matchers/active_model/comparison_matcher_spec.rb +5 -0
  28. data/spec/shoulda/matchers/active_model/disallow_value_matcher_spec.rb +18 -0
  29. data/spec/shoulda/matchers/active_model/ensure_inclusion_of_matcher_spec.rb +10 -0
  30. data/spec/shoulda/matchers/active_model/ensure_length_of_matcher_spec.rb +3 -3
  31. data/spec/shoulda/matchers/active_model/validate_numericality_of_matcher_spec.rb +13 -0
  32. data/spec/shoulda/matchers/active_model/validate_presence_of_matcher_spec.rb +14 -0
  33. data/spec/shoulda/matchers/active_model/validate_uniqueness_of_matcher_spec.rb +49 -1
  34. data/spec/shoulda/matchers/active_record/association_matcher_spec.rb +39 -4
  35. metadata +11 -3
@@ -46,6 +46,25 @@ describe Shoulda::Matchers::ActiveRecord::AssociationMatcher do
46
46
  belonging_to_parent.should_not belong_to(:parent).dependent(:destroy)
47
47
  end
48
48
 
49
+ it 'accepts an association with a valid :counter_cache option' do
50
+ belonging_to_parent(:counter_cache => :attribute_count).
51
+ should belong_to(:parent).counter_cache(:attribute_count)
52
+ end
53
+
54
+ it 'defaults :counter_cache to true' do
55
+ belonging_to_parent(:counter_cache => true).
56
+ should belong_to(:parent).counter_cache
57
+ end
58
+
59
+ it 'rejects an association with a bad :counter_cache option' do
60
+ belonging_to_parent(:counter_cache => :attribute_count).
61
+ should_not belong_to(:parent).counter_cache(true)
62
+ end
63
+
64
+ it 'rejects an association that has no :counter_cache option' do
65
+ belonging_to_parent.should_not belong_to(:parent).counter_cache
66
+ end
67
+
49
68
  it 'accepts an association with a valid :conditions option' do
50
69
  define_model :parent, :adopter => :boolean
51
70
  define_model :child, :parent_id => :integer do
@@ -256,7 +275,11 @@ describe Shoulda::Matchers::ActiveRecord::AssociationMatcher do
256
275
  end
257
276
 
258
277
  it 'rejects an association with a bad :dependent option' do
259
- having_many_children.should_not have_many(:children).dependent(:destroy)
278
+ matcher = have_many(:children).dependent(:destroy)
279
+
280
+ having_many_children.should_not matcher
281
+
282
+ matcher.failure_message_for_should.should =~ /children should have destroy dependency/
260
283
  end
261
284
 
262
285
  it 'accepts an association with a valid :order option' do
@@ -265,7 +288,11 @@ describe Shoulda::Matchers::ActiveRecord::AssociationMatcher do
265
288
  end
266
289
 
267
290
  it 'rejects an association with a bad :order option' do
268
- having_many_children.should_not have_many(:children).order(:id)
291
+ matcher = have_many(:children).order(:id)
292
+
293
+ having_many_children.should_not matcher
294
+
295
+ matcher.failure_message_for_should.should =~ /children should be ordered by id/
269
296
  end
270
297
 
271
298
  it 'accepts an association with a valid :conditions option' do
@@ -401,7 +428,11 @@ describe Shoulda::Matchers::ActiveRecord::AssociationMatcher do
401
428
  end
402
429
 
403
430
  it 'rejects an association with a bad :dependent option' do
404
- having_one_detail.should_not have_one(:detail).dependent(:destroy)
431
+ matcher = have_one(:detail).dependent(:destroy)
432
+
433
+ having_one_detail.should_not matcher
434
+
435
+ matcher.failure_message_for_should.should =~ /detail should have destroy dependency/
405
436
  end
406
437
 
407
438
  it 'accepts an association with a valid :order option' do
@@ -409,7 +440,11 @@ describe Shoulda::Matchers::ActiveRecord::AssociationMatcher do
409
440
  end
410
441
 
411
442
  it 'rejects an association with a bad :order option' do
412
- having_one_detail.should_not have_one(:detail).order(:id)
443
+ matcher = have_one(:detail).order(:id)
444
+
445
+ having_one_detail.should_not matcher
446
+
447
+ matcher.failure_message_for_should.should =~ /detail should be ordered by id/
413
448
  end
414
449
 
415
450
  it 'accepts an association with a valid :conditions option' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shoulda-matchers
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -14,7 +14,7 @@ authors:
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
- date: 2013-06-11 00:00:00.000000000 Z
17
+ date: 2013-08-16 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: activesupport
@@ -208,6 +208,7 @@ files:
208
208
  - lib/shoulda/matchers/action_controller/redirect_to_matcher.rb
209
209
  - lib/shoulda/matchers/action_controller/render_template_matcher.rb
210
210
  - lib/shoulda/matchers/action_controller/render_with_layout_matcher.rb
211
+ - lib/shoulda/matchers/action_controller/rescue_from_matcher.rb
211
212
  - lib/shoulda/matchers/action_controller/respond_with_matcher.rb
212
213
  - lib/shoulda/matchers/action_controller/route_matcher.rb
213
214
  - lib/shoulda/matchers/action_controller/set_session_matcher.rb
@@ -235,6 +236,11 @@ files:
235
236
  - lib/shoulda/matchers/active_record.rb
236
237
  - lib/shoulda/matchers/active_record/accept_nested_attributes_for_matcher.rb
237
238
  - lib/shoulda/matchers/active_record/association_matcher.rb
239
+ - lib/shoulda/matchers/active_record/association_matchers/counter_cache_matcher.rb
240
+ - lib/shoulda/matchers/active_record/association_matchers/dependent_matcher.rb
241
+ - lib/shoulda/matchers/active_record/association_matchers/model_reflector.rb
242
+ - lib/shoulda/matchers/active_record/association_matchers/order_matcher.rb
243
+ - lib/shoulda/matchers/active_record/association_matchers/through_matcher.rb
238
244
  - lib/shoulda/matchers/active_record/have_db_column_matcher.rb
239
245
  - lib/shoulda/matchers/active_record/have_db_index_matcher.rb
240
246
  - lib/shoulda/matchers/active_record/have_readonly_attribute_matcher.rb
@@ -249,6 +255,7 @@ files:
249
255
  - spec/shoulda/matchers/action_controller/redirect_to_matcher_spec.rb
250
256
  - spec/shoulda/matchers/action_controller/render_template_matcher_spec.rb
251
257
  - spec/shoulda/matchers/action_controller/render_with_layout_matcher_spec.rb
258
+ - spec/shoulda/matchers/action_controller/rescue_from_matcher_spec.rb
252
259
  - spec/shoulda/matchers/action_controller/respond_with_matcher_spec.rb
253
260
  - spec/shoulda/matchers/action_controller/route_matcher_spec.rb
254
261
  - spec/shoulda/matchers/action_controller/set_session_matcher_spec.rb
@@ -306,7 +313,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
306
313
  version: '0'
307
314
  segments:
308
315
  - 0
309
- hash: -819827211326946957
316
+ hash: 1901679853552928105
310
317
  requirements: []
311
318
  rubyforge_project:
312
319
  rubygems_version: 1.8.23
@@ -322,6 +329,7 @@ test_files:
322
329
  - spec/shoulda/matchers/action_controller/redirect_to_matcher_spec.rb
323
330
  - spec/shoulda/matchers/action_controller/render_template_matcher_spec.rb
324
331
  - spec/shoulda/matchers/action_controller/render_with_layout_matcher_spec.rb
332
+ - spec/shoulda/matchers/action_controller/rescue_from_matcher_spec.rb
325
333
  - spec/shoulda/matchers/action_controller/respond_with_matcher_spec.rb
326
334
  - spec/shoulda/matchers/action_controller/route_matcher_spec.rb
327
335
  - spec/shoulda/matchers/action_controller/set_session_matcher_spec.rb