acts_as_paranoid 0.7.2 → 0.8.1

Sign up to get free protection for your applications and to get access to all the features.
data/test/test_core.rb DELETED
@@ -1,679 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "test_helper"
4
-
5
- class ParanoidTest < ParanoidBaseTest
6
- def test_paranoid?
7
- assert !NotParanoid.paranoid?
8
- assert_raise(NoMethodError) { NotParanoid.delete_all! }
9
- assert_raise(NoMethodError) { NotParanoid.with_deleted }
10
- assert_raise(NoMethodError) { NotParanoid.only_deleted }
11
-
12
- assert ParanoidTime.paranoid?
13
- end
14
-
15
- def test_scope_inclusion_with_time_column_type
16
- assert ParanoidTime.respond_to?(:deleted_inside_time_window)
17
- assert ParanoidTime.respond_to?(:deleted_before_time)
18
- assert ParanoidTime.respond_to?(:deleted_after_time)
19
-
20
- assert !ParanoidBoolean.respond_to?(:deleted_inside_time_window)
21
- assert !ParanoidBoolean.respond_to?(:deleted_before_time)
22
- assert !ParanoidBoolean.respond_to?(:deleted_after_time)
23
- end
24
-
25
- def test_fake_removal
26
- assert_equal 3, ParanoidTime.count
27
- assert_equal 3, ParanoidBoolean.count
28
- assert_equal 1, ParanoidString.count
29
-
30
- ParanoidTime.first.destroy
31
- ParanoidBoolean.delete_all("name = 'paranoid' OR name = 'really paranoid'")
32
- ParanoidString.first.destroy
33
- assert_equal 2, ParanoidTime.count
34
- assert_equal 1, ParanoidBoolean.count
35
- assert_equal 0, ParanoidString.count
36
- assert_equal 1, ParanoidTime.only_deleted.count
37
- assert_equal 2, ParanoidBoolean.only_deleted.count
38
- assert_equal 1, ParanoidString.only_deleted.count
39
- assert_equal 3, ParanoidTime.with_deleted.count
40
- assert_equal 3, ParanoidBoolean.with_deleted.count
41
- assert_equal 1, ParanoidString.with_deleted.count
42
- end
43
-
44
- def test_real_removal
45
- ParanoidTime.first.destroy_fully!
46
- ParanoidBoolean.delete_all!("name = 'extremely paranoid' OR name = 'really paranoid'")
47
- ParanoidString.first.destroy_fully!
48
- assert_equal 2, ParanoidTime.count
49
- assert_equal 1, ParanoidBoolean.count
50
- assert_equal 0, ParanoidString.count
51
- assert_equal 2, ParanoidTime.with_deleted.count
52
- assert_equal 1, ParanoidBoolean.with_deleted.count
53
- assert_equal 0, ParanoidString.with_deleted.count
54
- assert_equal 0, ParanoidTime.only_deleted.count
55
- assert_equal 0, ParanoidBoolean.only_deleted.count
56
- assert_equal 0, ParanoidString.only_deleted.count
57
-
58
- ParanoidTime.first.destroy
59
- ParanoidTime.only_deleted.first.destroy
60
- assert_equal 0, ParanoidTime.only_deleted.count
61
-
62
- ParanoidTime.delete_all!
63
- assert_empty ParanoidTime.all
64
- assert_empty ParanoidTime.with_deleted
65
- end
66
-
67
- def test_non_persisted_destroy
68
- pt = ParanoidTime.new
69
- assert_nil pt.paranoid_value
70
- pt.destroy
71
- assert_not_nil pt.paranoid_value
72
- end
73
-
74
- def test_non_persisted_delete
75
- pt = ParanoidTime.new
76
- assert_nil pt.paranoid_value
77
- pt.delete
78
- assert_not_nil pt.paranoid_value
79
- end
80
-
81
- def test_non_persisted_destroy!
82
- pt = ParanoidTime.new
83
- assert_nil pt.paranoid_value
84
- pt.destroy!
85
- assert_not_nil pt.paranoid_value
86
- end
87
-
88
- def test_removal_not_persisted
89
- assert ParanoidTime.new.destroy
90
- end
91
-
92
- def test_recovery
93
- assert_equal 3, ParanoidBoolean.count
94
- ParanoidBoolean.first.destroy
95
- assert_equal 2, ParanoidBoolean.count
96
- ParanoidBoolean.only_deleted.first.recover
97
- assert_equal 3, ParanoidBoolean.count
98
-
99
- assert_equal 1, ParanoidString.count
100
- ParanoidString.first.destroy
101
- assert_equal 0, ParanoidString.count
102
- ParanoidString.with_deleted.first.recover
103
- assert_equal 1, ParanoidString.count
104
- end
105
-
106
- def test_recovery!
107
- ParanoidBoolean.first.destroy
108
- ParanoidBoolean.create(name: "paranoid")
109
-
110
- assert_raise do
111
- ParanoidBoolean.only_deleted.first.recover!
112
- end
113
- end
114
-
115
- # Rails does not allow saving deleted records
116
- def test_no_save_after_destroy
117
- paranoid = ParanoidString.first
118
- paranoid.destroy
119
- paranoid.name = "Let's update!"
120
-
121
- assert_not paranoid.save
122
- assert_raises ActiveRecord::RecordNotSaved do
123
- paranoid.save!
124
- end
125
- end
126
-
127
- def setup_recursive_tests
128
- @paranoid_time_object = ParanoidTime.first
129
-
130
- # Create one extra ParanoidHasManyDependant record so that we can validate
131
- # the correct dependants are recovered.
132
- ParanoidTime.where("id <> ?", @paranoid_time_object.id).first
133
- .paranoid_has_many_dependants.create(name: "should not be recovered").destroy
134
-
135
- @paranoid_boolean_count = ParanoidBoolean.count
136
-
137
- assert_equal 0, ParanoidHasManyDependant.count
138
- assert_equal 0, ParanoidBelongsDependant.count
139
- assert_equal 1, NotParanoid.count
140
-
141
- (1..3).each do |i|
142
- has_many_object = @paranoid_time_object.paranoid_has_many_dependants
143
- .create(name: "has_many_#{i}")
144
- has_many_object.create_paranoid_belongs_dependant(name: "belongs_to_#{i}")
145
- has_many_object.save
146
-
147
- paranoid_boolean = @paranoid_time_object.paranoid_booleans
148
- .create(name: "boolean_#{i}")
149
- paranoid_boolean.create_paranoid_has_one_dependant(name: "has_one_#{i}")
150
- paranoid_boolean.save
151
-
152
- @paranoid_time_object.not_paranoids.create(name: "not_paranoid_a#{i}")
153
- end
154
-
155
- @paranoid_time_object.create_not_paranoid(name: "not_paranoid_belongs_to")
156
- @paranoid_time_object.create_has_one_not_paranoid(name: "has_one_not_paranoid")
157
-
158
- assert_equal 3, ParanoidTime.count
159
- assert_equal 3, ParanoidHasManyDependant.count
160
- assert_equal 3, ParanoidBelongsDependant.count
161
- assert_equal @paranoid_boolean_count + 3, ParanoidBoolean.count
162
- assert_equal 3, ParanoidHasOneDependant.count
163
- assert_equal 5, NotParanoid.count
164
- assert_equal 1, HasOneNotParanoid.count
165
- end
166
-
167
- def test_recursive_fake_removal
168
- setup_recursive_tests
169
-
170
- @paranoid_time_object.destroy
171
-
172
- assert_equal 2, ParanoidTime.count
173
- assert_equal 0, ParanoidHasManyDependant.count
174
- assert_equal 0, ParanoidBelongsDependant.count
175
- assert_equal @paranoid_boolean_count, ParanoidBoolean.count
176
- assert_equal 0, ParanoidHasOneDependant.count
177
- assert_equal 1, NotParanoid.count
178
- assert_equal 0, HasOneNotParanoid.count
179
-
180
- assert_equal 3, ParanoidTime.with_deleted.count
181
- assert_equal 4, ParanoidHasManyDependant.with_deleted.count
182
- assert_equal 3, ParanoidBelongsDependant.with_deleted.count
183
- assert_equal @paranoid_boolean_count + 3, ParanoidBoolean.with_deleted.count
184
- assert_equal 3, ParanoidHasOneDependant.with_deleted.count
185
- end
186
-
187
- def test_recursive_real_removal
188
- setup_recursive_tests
189
-
190
- @paranoid_time_object.destroy_fully!
191
-
192
- assert_equal 0, ParanoidTime.only_deleted.count
193
- assert_equal 1, ParanoidHasManyDependant.only_deleted.count
194
- assert_equal 0, ParanoidBelongsDependant.only_deleted.count
195
- assert_equal 0, ParanoidBoolean.only_deleted.count
196
- assert_equal 0, ParanoidHasOneDependant.only_deleted.count
197
- assert_equal 1, NotParanoid.count
198
- assert_equal 0, HasOneNotParanoid.count
199
- end
200
-
201
- def test_recursive_recovery
202
- setup_recursive_tests
203
-
204
- @paranoid_time_object.destroy
205
- @paranoid_time_object.reload
206
-
207
- @paranoid_time_object.recover(recursive: true)
208
-
209
- assert_equal 3, ParanoidTime.count
210
- assert_equal 3, ParanoidHasManyDependant.count
211
- assert_equal 3, ParanoidBelongsDependant.count
212
- assert_equal @paranoid_boolean_count + 3, ParanoidBoolean.count
213
- assert_equal 3, ParanoidHasOneDependant.count
214
- assert_equal 1, NotParanoid.count
215
- assert_equal 0, HasOneNotParanoid.count
216
- end
217
-
218
- def test_recursive_recovery_dependant_window
219
- setup_recursive_tests
220
-
221
- # Stop the following from recovering:
222
- # - ParanoidHasManyDependant and its ParanoidBelongsDependant
223
- # - A single ParanoidBelongsDependant, but not its parent
224
- Time.stub :now, 2.days.ago do
225
- @paranoid_time_object.paranoid_has_many_dependants.first.destroy
226
- end
227
- Time.stub :now, 1.hour.ago do
228
- @paranoid_time_object.paranoid_has_many_dependants
229
- .last.paranoid_belongs_dependant
230
- .destroy
231
- end
232
- @paranoid_time_object.destroy
233
- @paranoid_time_object.reload
234
-
235
- @paranoid_time_object.recover(recursive: true)
236
-
237
- assert_equal 3, ParanoidTime.count
238
- assert_equal 2, ParanoidHasManyDependant.count
239
- assert_equal 1, ParanoidBelongsDependant.count
240
- assert_equal @paranoid_boolean_count + 3, ParanoidBoolean.count
241
- assert_equal 3, ParanoidHasOneDependant.count
242
- assert_equal 1, NotParanoid.count
243
- assert_equal 0, HasOneNotParanoid.count
244
- end
245
-
246
- def test_recursive_recovery_for_belongs_to_polymorphic
247
- child_1 = ParanoidAndroid.create
248
- section_1 = ParanoidSection.create(paranoid_thing: child_1)
249
-
250
- child_2 = ParanoidPolygon.create(sides: 3)
251
- section_2 = ParanoidSection.create(paranoid_thing: child_2)
252
-
253
- assert_equal section_1.paranoid_thing, child_1
254
- assert_equal section_1.paranoid_thing.class, ParanoidAndroid
255
- assert_equal section_2.paranoid_thing, child_2
256
- assert_equal section_2.paranoid_thing.class, ParanoidPolygon
257
-
258
- parent = ParanoidTime.create(name: "paranoid_parent")
259
- parent.paranoid_sections << section_1
260
- parent.paranoid_sections << section_2
261
-
262
- assert_equal 4, ParanoidTime.count
263
- assert_equal 2, ParanoidSection.count
264
- assert_equal 1, ParanoidAndroid.count
265
- assert_equal 1, ParanoidPolygon.count
266
-
267
- parent.destroy
268
-
269
- assert_equal 3, ParanoidTime.count
270
- assert_equal 0, ParanoidSection.count
271
- assert_equal 0, ParanoidAndroid.count
272
- assert_equal 0, ParanoidPolygon.count
273
-
274
- parent.reload
275
- parent.recover
276
-
277
- assert_equal 4, ParanoidTime.count
278
- assert_equal 2, ParanoidSection.count
279
- assert_equal 1, ParanoidAndroid.count
280
- assert_equal 1, ParanoidPolygon.count
281
- end
282
-
283
- def test_non_recursive_recovery
284
- setup_recursive_tests
285
-
286
- @paranoid_time_object.destroy
287
- @paranoid_time_object.reload
288
-
289
- @paranoid_time_object.recover(recursive: false)
290
-
291
- assert_equal 3, ParanoidTime.count
292
- assert_equal 0, ParanoidHasManyDependant.count
293
- assert_equal 0, ParanoidBelongsDependant.count
294
- assert_equal @paranoid_boolean_count, ParanoidBoolean.count
295
- assert_equal 0, ParanoidHasOneDependant.count
296
- assert_equal 1, NotParanoid.count
297
- assert_equal 0, HasOneNotParanoid.count
298
- end
299
-
300
- def test_dirty
301
- pt = ParanoidTime.create
302
- pt.destroy
303
- assert_not pt.changed?
304
- end
305
-
306
- def test_delete_dirty
307
- pt = ParanoidTime.create
308
- pt.delete
309
- assert_not pt.changed?
310
- end
311
-
312
- def test_destroy_fully_dirty
313
- pt = ParanoidTime.create
314
- pt.destroy_fully!
315
- assert_not pt.changed?
316
- end
317
-
318
- def test_deleted?
319
- ParanoidTime.first.destroy
320
- assert ParanoidTime.with_deleted.first.deleted?
321
-
322
- ParanoidString.first.destroy
323
- assert ParanoidString.with_deleted.first.deleted?
324
- end
325
-
326
- def test_delete_deleted?
327
- ParanoidTime.first.delete
328
- assert ParanoidTime.with_deleted.first.deleted?
329
-
330
- ParanoidString.first.delete
331
- assert ParanoidString.with_deleted.first.deleted?
332
- end
333
-
334
- def test_destroy_fully_deleted?
335
- object = ParanoidTime.first
336
- object.destroy_fully!
337
- assert object.deleted?
338
-
339
- object = ParanoidString.first
340
- object.destroy_fully!
341
- assert object.deleted?
342
- end
343
-
344
- def test_deleted_fully?
345
- ParanoidTime.first.destroy
346
- assert_not ParanoidTime.with_deleted.first.deleted_fully?
347
-
348
- ParanoidString.first.destroy
349
- assert ParanoidString.with_deleted.first.deleted?
350
- end
351
-
352
- def test_delete_deleted_fully?
353
- ParanoidTime.first.delete
354
- assert_not ParanoidTime.with_deleted.first.deleted_fully?
355
- end
356
-
357
- def test_destroy_fully_deleted_fully?
358
- object = ParanoidTime.first
359
- object.destroy_fully!
360
- assert object.deleted_fully?
361
- end
362
-
363
- def test_paranoid_destroy_callbacks
364
- @paranoid_with_callback = ParanoidWithCallback.first
365
- ParanoidWithCallback.transaction do
366
- @paranoid_with_callback.destroy
367
- end
368
-
369
- assert @paranoid_with_callback.called_before_destroy
370
- assert @paranoid_with_callback.called_after_destroy
371
- assert @paranoid_with_callback.called_after_commit_on_destroy
372
- end
373
-
374
- def test_hard_destroy_callbacks
375
- @paranoid_with_callback = ParanoidWithCallback.first
376
-
377
- ParanoidWithCallback.transaction do
378
- @paranoid_with_callback.destroy!
379
- end
380
-
381
- assert @paranoid_with_callback.called_before_destroy
382
- assert @paranoid_with_callback.called_after_destroy
383
- assert @paranoid_with_callback.called_after_commit_on_destroy
384
- end
385
-
386
- def test_recovery_callbacks
387
- @paranoid_with_callback = ParanoidWithCallback.first
388
-
389
- ParanoidWithCallback.transaction do
390
- @paranoid_with_callback.destroy
391
-
392
- assert_nil @paranoid_with_callback.called_before_recover
393
- assert_nil @paranoid_with_callback.called_after_recover
394
-
395
- @paranoid_with_callback.recover
396
- end
397
-
398
- assert @paranoid_with_callback.called_before_recover
399
- assert @paranoid_with_callback.called_after_recover
400
- end
401
-
402
- def test_recovery_callbacks_without_destroy
403
- @paranoid_with_callback = ParanoidWithCallback.first
404
- @paranoid_with_callback.recover
405
-
406
- assert_nil @paranoid_with_callback.called_before_recover
407
- assert_nil @paranoid_with_callback.called_after_recover
408
- end
409
-
410
- def test_delete_by_multiple_id_is_paranoid
411
- model_a = ParanoidBelongsDependant.create
412
- model_b = ParanoidBelongsDependant.create
413
- ParanoidBelongsDependant.delete([model_a.id, model_b.id])
414
-
415
- assert_paranoid_deletion(model_a)
416
- assert_paranoid_deletion(model_b)
417
- end
418
-
419
- def test_destroy_by_multiple_id_is_paranoid
420
- model_a = ParanoidBelongsDependant.create
421
- model_b = ParanoidBelongsDependant.create
422
- ParanoidBelongsDependant.destroy([model_a.id, model_b.id])
423
-
424
- assert_paranoid_deletion(model_a)
425
- assert_paranoid_deletion(model_b)
426
- end
427
-
428
- def test_delete_by_single_id_is_paranoid
429
- model = ParanoidBelongsDependant.create
430
- ParanoidBelongsDependant.delete(model.id)
431
-
432
- assert_paranoid_deletion(model)
433
- end
434
-
435
- def test_destroy_by_single_id_is_paranoid
436
- model = ParanoidBelongsDependant.create
437
- ParanoidBelongsDependant.destroy(model.id)
438
-
439
- assert_paranoid_deletion(model)
440
- end
441
-
442
- def test_instance_delete_is_paranoid
443
- model = ParanoidBelongsDependant.create
444
- model.delete
445
-
446
- assert_paranoid_deletion(model)
447
- end
448
-
449
- def test_instance_destroy_is_paranoid
450
- model = ParanoidBelongsDependant.create
451
- model.destroy
452
-
453
- assert_paranoid_deletion(model)
454
- end
455
-
456
- # Test string type columns that don't have a nil value when not deleted (Y/N for example)
457
- def test_string_type_with_no_nil_value_before_destroy
458
- ps = ParanoidString.create!(deleted: "not dead")
459
- assert_equal 1, ParanoidString.where(id: ps).count
460
- end
461
-
462
- def test_string_type_with_no_nil_value_after_destroy
463
- ps = ParanoidString.create!(deleted: "not dead")
464
- ps.destroy
465
- assert_equal 0, ParanoidString.where(id: ps).count
466
- end
467
-
468
- def test_string_type_with_no_nil_value_before_destroy_with_deleted
469
- ps = ParanoidString.create!(deleted: "not dead")
470
- assert_equal 1, ParanoidString.with_deleted.where(id: ps).count
471
- end
472
-
473
- def test_string_type_with_no_nil_value_after_destroy_with_deleted
474
- ps = ParanoidString.create!(deleted: "not dead")
475
- ps.destroy
476
- assert_equal 1, ParanoidString.with_deleted.where(id: ps).count
477
- end
478
-
479
- def test_string_type_with_no_nil_value_before_destroy_only_deleted
480
- ps = ParanoidString.create!(deleted: "not dead")
481
- assert_equal 0, ParanoidString.only_deleted.where(id: ps).count
482
- end
483
-
484
- def test_string_type_with_no_nil_value_after_destroy_only_deleted
485
- ps = ParanoidString.create!(deleted: "not dead")
486
- ps.destroy
487
- assert_equal 1, ParanoidString.only_deleted.where(id: ps).count
488
- end
489
-
490
- def test_string_type_with_no_nil_value_after_destroyed_twice
491
- ps = ParanoidString.create!(deleted: "not dead")
492
- 2.times { ps.destroy }
493
- assert_equal 0, ParanoidString.with_deleted.where(id: ps).count
494
- end
495
-
496
- # Test boolean type columns, that are not nullable
497
- def test_boolean_type_with_no_nil_value_before_destroy
498
- ps = ParanoidBooleanNotNullable.create!
499
- assert_equal 1, ParanoidBooleanNotNullable.where(id: ps).count
500
- end
501
-
502
- def test_boolean_type_with_no_nil_value_after_destroy
503
- ps = ParanoidBooleanNotNullable.create!
504
- ps.destroy
505
- assert_equal 0, ParanoidBooleanNotNullable.where(id: ps).count
506
- end
507
-
508
- def test_boolean_type_with_no_nil_value_before_destroy_with_deleted
509
- ps = ParanoidBooleanNotNullable.create!
510
- assert_equal 1, ParanoidBooleanNotNullable.with_deleted.where(id: ps).count
511
- end
512
-
513
- def test_boolean_type_with_no_nil_value_after_destroy_with_deleted
514
- ps = ParanoidBooleanNotNullable.create!
515
- ps.destroy
516
- assert_equal 1, ParanoidBooleanNotNullable.with_deleted.where(id: ps).count
517
- end
518
-
519
- def test_boolean_type_with_no_nil_value_before_destroy_only_deleted
520
- ps = ParanoidBooleanNotNullable.create!
521
- assert_equal 0, ParanoidBooleanNotNullable.only_deleted.where(id: ps).count
522
- end
523
-
524
- def test_boolean_type_with_no_nil_value_after_destroy_only_deleted
525
- ps = ParanoidBooleanNotNullable.create!
526
- ps.destroy
527
- assert_equal 1, ParanoidBooleanNotNullable.only_deleted.where(id: ps).count
528
- end
529
-
530
- def test_boolean_type_with_no_nil_value_after_destroyed_twice
531
- ps = ParanoidBooleanNotNullable.create!
532
- 2.times { ps.destroy }
533
- assert_equal 0, ParanoidBooleanNotNullable.with_deleted.where(id: ps).count
534
- end
535
-
536
- def test_boolean_type_with_no_nil_value_after_recover
537
- ps = ParanoidBooleanNotNullable.create!
538
- ps.destroy
539
- assert_equal 1, ParanoidBooleanNotNullable.only_deleted.where(id: ps).count
540
-
541
- ps.recover
542
- assert_equal 1, ParanoidBooleanNotNullable.where(id: ps).count
543
- end
544
-
545
- def test_boolean_type_with_no_nil_value_after_recover!
546
- ps = ParanoidBooleanNotNullable.create!
547
- ps.destroy
548
- assert_equal 1, ParanoidBooleanNotNullable.only_deleted.where(id: ps).count
549
-
550
- ps.recover!
551
- assert_equal 1, ParanoidBooleanNotNullable.where(id: ps).count
552
- end
553
-
554
- def test_no_double_tap_destroys_fully
555
- ps = ParanoidNoDoubleTapDestroysFully.create!
556
- 2.times { ps.destroy }
557
- assert_equal 1, ParanoidNoDoubleTapDestroysFully.with_deleted.where(id: ps).count
558
- end
559
-
560
- def test_decrement_counters_without_touch
561
- paranoid_boolean = ParanoidBoolean.create!
562
- paranoid_with_counter_cache = ParanoidWithCounterCache
563
- .create!(paranoid_boolean: paranoid_boolean)
564
-
565
- assert_equal 1, paranoid_boolean.paranoid_with_counter_caches_count
566
- updated_at = paranoid_boolean.reload.updated_at
567
-
568
- paranoid_with_counter_cache.destroy
569
-
570
- assert_equal 0, paranoid_boolean.reload.paranoid_with_counter_caches_count
571
- assert_equal updated_at, paranoid_boolean.reload.updated_at
572
- end
573
-
574
- def test_decrement_custom_counters
575
- paranoid_boolean = ParanoidBoolean.create!
576
- paranoid_with_custom_counter_cache = ParanoidWithCustomCounterCache
577
- .create!(paranoid_boolean: paranoid_boolean)
578
-
579
- assert_equal 1, paranoid_boolean.custom_counter_cache
580
-
581
- paranoid_with_custom_counter_cache.destroy
582
-
583
- assert_equal 0, paranoid_boolean.reload.custom_counter_cache
584
- end
585
-
586
- def test_decrement_counters_with_touch
587
- paranoid_boolean = ParanoidBoolean.create!
588
- paranoid_with_counter_cache = ParanoidWithTouchAndCounterCache
589
- .create!(paranoid_boolean: paranoid_boolean)
590
-
591
- assert_equal 1, paranoid_boolean.paranoid_with_touch_and_counter_caches_count
592
- updated_at = paranoid_boolean.reload.updated_at
593
-
594
- paranoid_with_counter_cache.destroy
595
-
596
- assert_equal 0, paranoid_boolean.reload.paranoid_with_touch_and_counter_caches_count
597
- assert_not_equal updated_at, paranoid_boolean.reload.updated_at
598
- end
599
-
600
- def test_touch_belongs_to
601
- paranoid_boolean = ParanoidBoolean.create!
602
- paranoid_with_counter_cache = ParanoidWithTouch
603
- .create!(paranoid_boolean: paranoid_boolean)
604
-
605
- updated_at = paranoid_boolean.reload.updated_at
606
-
607
- paranoid_with_counter_cache.destroy
608
-
609
- assert_not_equal updated_at, paranoid_boolean.reload.updated_at
610
- end
611
-
612
- def test_destroy_with_optional_belongs_to_and_counter_cache
613
- ps = ParanoidWithCounterCacheOnOptionalBelognsTo.create!
614
- ps.destroy
615
- assert_equal 1, ParanoidWithCounterCacheOnOptionalBelognsTo.only_deleted
616
- .where(id: ps).count
617
- end
618
-
619
- def test_hard_destroy_decrement_counters
620
- paranoid_boolean = ParanoidBoolean.create!
621
- paranoid_with_counter_cache = ParanoidWithCounterCache
622
- .create!(paranoid_boolean: paranoid_boolean)
623
-
624
- assert_equal 1, paranoid_boolean.paranoid_with_counter_caches_count
625
-
626
- paranoid_with_counter_cache.destroy_fully!
627
-
628
- assert_equal 0, paranoid_boolean.reload.paranoid_with_counter_caches_count
629
- end
630
-
631
- def test_hard_destroy_decrement_custom_counters
632
- paranoid_boolean = ParanoidBoolean.create!
633
- paranoid_with_custom_counter_cache = ParanoidWithCustomCounterCache
634
- .create!(paranoid_boolean: paranoid_boolean)
635
-
636
- assert_equal 1, paranoid_boolean.custom_counter_cache
637
-
638
- paranoid_with_custom_counter_cache.destroy_fully!
639
-
640
- assert_equal 0, paranoid_boolean.reload.custom_counter_cache
641
- end
642
-
643
- def test_increment_counters
644
- paranoid_boolean = ParanoidBoolean.create!
645
- paranoid_with_counter_cache = ParanoidWithCounterCache
646
- .create!(paranoid_boolean: paranoid_boolean)
647
-
648
- assert_equal 1, paranoid_boolean.paranoid_with_counter_caches_count
649
-
650
- paranoid_with_counter_cache.destroy
651
-
652
- assert_equal 0, paranoid_boolean.reload.paranoid_with_counter_caches_count
653
-
654
- paranoid_with_counter_cache.recover
655
-
656
- assert_equal 1, paranoid_boolean.reload.paranoid_with_counter_caches_count
657
- end
658
-
659
- def test_increment_custom_counters
660
- paranoid_boolean = ParanoidBoolean.create!
661
- paranoid_with_custom_counter_cache = ParanoidWithCustomCounterCache
662
- .create!(paranoid_boolean: paranoid_boolean)
663
-
664
- assert_equal 1, paranoid_boolean.custom_counter_cache
665
-
666
- paranoid_with_custom_counter_cache.destroy
667
-
668
- assert_equal 0, paranoid_boolean.reload.custom_counter_cache
669
-
670
- paranoid_with_custom_counter_cache.recover
671
-
672
- assert_equal 1, paranoid_boolean.reload.custom_counter_cache
673
- end
674
-
675
- def test_explicitly_setting_table_name_after_acts_as_paranoid_macro
676
- assert_equal "explicit_table.deleted_at", ParanoidWithExplicitTableNameAfterMacro
677
- .paranoid_column_reference
678
- end
679
- end