acts_as_paranoid 0.7.3 → 0.8.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.
data/test/test_core.rb DELETED
@@ -1,736 +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
- def test_recover_has_one_association
116
- parent = ParanoidBoolean.create(name: "parent")
117
- child = parent.create_paranoid_has_one_dependant(name: "child")
118
-
119
- parent.destroy
120
- assert parent.paranoid_has_one_dependant.destroyed?
121
-
122
- parent.recover
123
- refute parent.paranoid_has_one_dependant.destroyed?
124
-
125
- child.reload
126
- refute child.destroyed?
127
- end
128
-
129
- def test_recover_has_many_association
130
- parent = ParanoidTime.create(name: "parent")
131
- child = parent.paranoid_has_many_dependants.create(name: "child")
132
-
133
- parent.destroy
134
- assert child.destroyed?
135
-
136
- parent.recover
137
- assert_equal 1, parent.paranoid_has_many_dependants.count
138
-
139
- child.reload
140
- refute child.destroyed?
141
- end
142
-
143
- # Rails does not allow saving deleted records
144
- def test_no_save_after_destroy
145
- paranoid = ParanoidString.first
146
- paranoid.destroy
147
- paranoid.name = "Let's update!"
148
-
149
- assert_not paranoid.save
150
- assert_raises ActiveRecord::RecordNotSaved do
151
- paranoid.save!
152
- end
153
- end
154
-
155
- def test_scope_chaining
156
- assert_equal 3, ParanoidBoolean.unscoped.with_deleted.count
157
- assert_equal 0, ParanoidBoolean.unscoped.only_deleted.count
158
- assert_equal 0, ParanoidBoolean.with_deleted.only_deleted.count
159
- assert_equal 3, ParanoidBoolean.with_deleted.with_deleted.count
160
- end
161
-
162
- def setup_recursive_tests
163
- @paranoid_time_object = ParanoidTime.first
164
-
165
- # Create one extra ParanoidHasManyDependant record so that we can validate
166
- # the correct dependants are recovered.
167
- ParanoidTime.where("id <> ?", @paranoid_time_object.id).first
168
- .paranoid_has_many_dependants.create(name: "should not be recovered").destroy
169
-
170
- @paranoid_boolean_count = ParanoidBoolean.count
171
-
172
- assert_equal 0, ParanoidHasManyDependant.count
173
- assert_equal 0, ParanoidBelongsDependant.count
174
- assert_equal 1, NotParanoid.count
175
-
176
- (1..3).each do |i|
177
- has_many_object = @paranoid_time_object.paranoid_has_many_dependants
178
- .create(name: "has_many_#{i}")
179
- has_many_object.create_paranoid_belongs_dependant(name: "belongs_to_#{i}")
180
- has_many_object.save
181
-
182
- paranoid_boolean = @paranoid_time_object.paranoid_booleans
183
- .create(name: "boolean_#{i}")
184
- paranoid_boolean.create_paranoid_has_one_dependant(name: "has_one_#{i}")
185
- paranoid_boolean.save
186
-
187
- @paranoid_time_object.not_paranoids.create(name: "not_paranoid_a#{i}")
188
- end
189
-
190
- @paranoid_time_object.create_not_paranoid(name: "not_paranoid_belongs_to")
191
- @paranoid_time_object.create_has_one_not_paranoid(name: "has_one_not_paranoid")
192
-
193
- assert_equal 3, ParanoidTime.count
194
- assert_equal 3, ParanoidHasManyDependant.count
195
- assert_equal 3, ParanoidBelongsDependant.count
196
- assert_equal @paranoid_boolean_count + 3, ParanoidBoolean.count
197
- assert_equal 3, ParanoidHasOneDependant.count
198
- assert_equal 5, NotParanoid.count
199
- assert_equal 1, HasOneNotParanoid.count
200
- end
201
-
202
- def test_recursive_fake_removal
203
- setup_recursive_tests
204
-
205
- @paranoid_time_object.destroy
206
-
207
- assert_equal 2, ParanoidTime.count
208
- assert_equal 0, ParanoidHasManyDependant.count
209
- assert_equal 0, ParanoidBelongsDependant.count
210
- assert_equal @paranoid_boolean_count, ParanoidBoolean.count
211
- assert_equal 0, ParanoidHasOneDependant.count
212
- assert_equal 1, NotParanoid.count
213
- assert_equal 0, HasOneNotParanoid.count
214
-
215
- assert_equal 3, ParanoidTime.with_deleted.count
216
- assert_equal 4, ParanoidHasManyDependant.with_deleted.count
217
- assert_equal 3, ParanoidBelongsDependant.with_deleted.count
218
- assert_equal @paranoid_boolean_count + 3, ParanoidBoolean.with_deleted.count
219
- assert_equal 3, ParanoidHasOneDependant.with_deleted.count
220
- end
221
-
222
- def test_recursive_real_removal
223
- setup_recursive_tests
224
-
225
- @paranoid_time_object.destroy_fully!
226
-
227
- assert_equal 0, ParanoidTime.only_deleted.count
228
- assert_equal 1, ParanoidHasManyDependant.only_deleted.count
229
- assert_equal 0, ParanoidBelongsDependant.only_deleted.count
230
- assert_equal 0, ParanoidBoolean.only_deleted.count
231
- assert_equal 0, ParanoidHasOneDependant.only_deleted.count
232
- assert_equal 1, NotParanoid.count
233
- assert_equal 0, HasOneNotParanoid.count
234
- end
235
-
236
- def test_recursive_recovery
237
- setup_recursive_tests
238
-
239
- @paranoid_time_object.destroy
240
- @paranoid_time_object.reload
241
-
242
- @paranoid_time_object.recover(recursive: true)
243
-
244
- assert_equal 3, ParanoidTime.count
245
- assert_equal 3, ParanoidHasManyDependant.count
246
- assert_equal 3, ParanoidBelongsDependant.count
247
- assert_equal @paranoid_boolean_count + 3, ParanoidBoolean.count
248
- assert_equal 3, ParanoidHasOneDependant.count
249
- assert_equal 1, NotParanoid.count
250
- assert_equal 0, HasOneNotParanoid.count
251
- end
252
-
253
- def test_recursive_recovery_dependant_window
254
- setup_recursive_tests
255
-
256
- # Stop the following from recovering:
257
- # - ParanoidHasManyDependant and its ParanoidBelongsDependant
258
- # - A single ParanoidBelongsDependant, but not its parent
259
- Time.stub :now, 2.days.ago do
260
- @paranoid_time_object.paranoid_has_many_dependants.first.destroy
261
- end
262
- Time.stub :now, 1.hour.ago do
263
- @paranoid_time_object.paranoid_has_many_dependants
264
- .last.paranoid_belongs_dependant
265
- .destroy
266
- end
267
- @paranoid_time_object.destroy
268
- @paranoid_time_object.reload
269
-
270
- @paranoid_time_object.recover(recursive: true)
271
-
272
- assert_equal 3, ParanoidTime.count
273
- assert_equal 2, ParanoidHasManyDependant.count
274
- assert_equal 1, ParanoidBelongsDependant.count
275
- assert_equal @paranoid_boolean_count + 3, ParanoidBoolean.count
276
- assert_equal 3, ParanoidHasOneDependant.count
277
- assert_equal 1, NotParanoid.count
278
- assert_equal 0, HasOneNotParanoid.count
279
- end
280
-
281
- def test_recursive_recovery_for_belongs_to_polymorphic
282
- child_1 = ParanoidAndroid.create
283
- section_1 = ParanoidSection.create(paranoid_thing: child_1)
284
-
285
- child_2 = ParanoidPolygon.create(sides: 3)
286
- section_2 = ParanoidSection.create(paranoid_thing: child_2)
287
-
288
- assert_equal section_1.paranoid_thing, child_1
289
- assert_equal section_1.paranoid_thing.class, ParanoidAndroid
290
- assert_equal section_2.paranoid_thing, child_2
291
- assert_equal section_2.paranoid_thing.class, ParanoidPolygon
292
-
293
- parent = ParanoidTime.create(name: "paranoid_parent")
294
- parent.paranoid_sections << section_1
295
- parent.paranoid_sections << section_2
296
-
297
- assert_equal 4, ParanoidTime.count
298
- assert_equal 2, ParanoidSection.count
299
- assert_equal 1, ParanoidAndroid.count
300
- assert_equal 1, ParanoidPolygon.count
301
-
302
- parent.destroy
303
-
304
- assert_equal 3, ParanoidTime.count
305
- assert_equal 0, ParanoidSection.count
306
- assert_equal 0, ParanoidAndroid.count
307
- assert_equal 0, ParanoidPolygon.count
308
-
309
- parent.reload
310
- parent.recover
311
-
312
- assert_equal 4, ParanoidTime.count
313
- assert_equal 2, ParanoidSection.count
314
- assert_equal 1, ParanoidAndroid.count
315
- assert_equal 1, ParanoidPolygon.count
316
- end
317
-
318
- def test_non_recursive_recovery
319
- setup_recursive_tests
320
-
321
- @paranoid_time_object.destroy
322
- @paranoid_time_object.reload
323
-
324
- @paranoid_time_object.recover(recursive: false)
325
-
326
- assert_equal 3, ParanoidTime.count
327
- assert_equal 0, ParanoidHasManyDependant.count
328
- assert_equal 0, ParanoidBelongsDependant.count
329
- assert_equal @paranoid_boolean_count, ParanoidBoolean.count
330
- assert_equal 0, ParanoidHasOneDependant.count
331
- assert_equal 1, NotParanoid.count
332
- assert_equal 0, HasOneNotParanoid.count
333
- end
334
-
335
- def test_dirty
336
- pt = ParanoidTime.create
337
- pt.destroy
338
- assert_not pt.changed?
339
- end
340
-
341
- def test_delete_dirty
342
- pt = ParanoidTime.create
343
- pt.delete
344
- assert_not pt.changed?
345
- end
346
-
347
- def test_destroy_fully_dirty
348
- pt = ParanoidTime.create
349
- pt.destroy_fully!
350
- assert_not pt.changed?
351
- end
352
-
353
- def test_deleted?
354
- ParanoidTime.first.destroy
355
- assert ParanoidTime.with_deleted.first.deleted?
356
-
357
- ParanoidString.first.destroy
358
- assert ParanoidString.with_deleted.first.deleted?
359
- end
360
-
361
- def test_delete_deleted?
362
- ParanoidTime.first.delete
363
- assert ParanoidTime.with_deleted.first.deleted?
364
-
365
- ParanoidString.first.delete
366
- assert ParanoidString.with_deleted.first.deleted?
367
- end
368
-
369
- def test_destroy_fully_deleted?
370
- object = ParanoidTime.first
371
- object.destroy_fully!
372
- assert object.deleted?
373
-
374
- object = ParanoidString.first
375
- object.destroy_fully!
376
- assert object.deleted?
377
- end
378
-
379
- def test_deleted_fully?
380
- ParanoidTime.first.destroy
381
- assert_not ParanoidTime.with_deleted.first.deleted_fully?
382
-
383
- ParanoidString.first.destroy
384
- assert ParanoidString.with_deleted.first.deleted?
385
- end
386
-
387
- def test_delete_deleted_fully?
388
- ParanoidTime.first.delete
389
- assert_not ParanoidTime.with_deleted.first.deleted_fully?
390
- end
391
-
392
- def test_destroy_fully_deleted_fully?
393
- object = ParanoidTime.first
394
- object.destroy_fully!
395
- assert object.deleted_fully?
396
- end
397
-
398
- def test_paranoid_destroy_callbacks
399
- @paranoid_with_callback = ParanoidWithCallback.first
400
- ParanoidWithCallback.transaction do
401
- @paranoid_with_callback.destroy
402
- end
403
-
404
- assert @paranoid_with_callback.called_before_destroy
405
- assert @paranoid_with_callback.called_after_destroy
406
- assert @paranoid_with_callback.called_after_commit_on_destroy
407
- end
408
-
409
- def test_hard_destroy_callbacks
410
- @paranoid_with_callback = ParanoidWithCallback.first
411
-
412
- ParanoidWithCallback.transaction do
413
- @paranoid_with_callback.destroy!
414
- end
415
-
416
- assert @paranoid_with_callback.called_before_destroy
417
- assert @paranoid_with_callback.called_after_destroy
418
- assert @paranoid_with_callback.called_after_commit_on_destroy
419
- end
420
-
421
- def test_recovery_callbacks
422
- @paranoid_with_callback = ParanoidWithCallback.first
423
-
424
- ParanoidWithCallback.transaction do
425
- @paranoid_with_callback.destroy
426
-
427
- assert_nil @paranoid_with_callback.called_before_recover
428
- assert_nil @paranoid_with_callback.called_after_recover
429
-
430
- @paranoid_with_callback.recover
431
- end
432
-
433
- assert @paranoid_with_callback.called_before_recover
434
- assert @paranoid_with_callback.called_after_recover
435
- end
436
-
437
- def test_recovery_callbacks_without_destroy
438
- @paranoid_with_callback = ParanoidWithCallback.first
439
- @paranoid_with_callback.recover
440
-
441
- assert_nil @paranoid_with_callback.called_before_recover
442
- assert_nil @paranoid_with_callback.called_after_recover
443
- end
444
-
445
- def test_delete_by_multiple_id_is_paranoid
446
- model_a = ParanoidBelongsDependant.create
447
- model_b = ParanoidBelongsDependant.create
448
- ParanoidBelongsDependant.delete([model_a.id, model_b.id])
449
-
450
- assert_paranoid_deletion(model_a)
451
- assert_paranoid_deletion(model_b)
452
- end
453
-
454
- def test_destroy_by_multiple_id_is_paranoid
455
- model_a = ParanoidBelongsDependant.create
456
- model_b = ParanoidBelongsDependant.create
457
- ParanoidBelongsDependant.destroy([model_a.id, model_b.id])
458
-
459
- assert_paranoid_deletion(model_a)
460
- assert_paranoid_deletion(model_b)
461
- end
462
-
463
- def test_delete_by_single_id_is_paranoid
464
- model = ParanoidBelongsDependant.create
465
- ParanoidBelongsDependant.delete(model.id)
466
-
467
- assert_paranoid_deletion(model)
468
- end
469
-
470
- def test_destroy_by_single_id_is_paranoid
471
- model = ParanoidBelongsDependant.create
472
- ParanoidBelongsDependant.destroy(model.id)
473
-
474
- assert_paranoid_deletion(model)
475
- end
476
-
477
- def test_instance_delete_is_paranoid
478
- model = ParanoidBelongsDependant.create
479
- model.delete
480
-
481
- assert_paranoid_deletion(model)
482
- end
483
-
484
- def test_instance_destroy_is_paranoid
485
- model = ParanoidBelongsDependant.create
486
- model.destroy
487
-
488
- assert_paranoid_deletion(model)
489
- end
490
-
491
- # Test string type columns that don't have a nil value when not deleted (Y/N for example)
492
- def test_string_type_with_no_nil_value_before_destroy
493
- ps = ParanoidString.create!(deleted: "not dead")
494
- assert_equal 1, ParanoidString.where(id: ps).count
495
- end
496
-
497
- def test_string_type_with_no_nil_value_after_destroy
498
- ps = ParanoidString.create!(deleted: "not dead")
499
- ps.destroy
500
- assert_equal 0, ParanoidString.where(id: ps).count
501
- end
502
-
503
- def test_string_type_with_no_nil_value_before_destroy_with_deleted
504
- ps = ParanoidString.create!(deleted: "not dead")
505
- assert_equal 1, ParanoidString.with_deleted.where(id: ps).count
506
- end
507
-
508
- def test_string_type_with_no_nil_value_after_destroy_with_deleted
509
- ps = ParanoidString.create!(deleted: "not dead")
510
- ps.destroy
511
- assert_equal 1, ParanoidString.with_deleted.where(id: ps).count
512
- end
513
-
514
- def test_string_type_with_no_nil_value_before_destroy_only_deleted
515
- ps = ParanoidString.create!(deleted: "not dead")
516
- assert_equal 0, ParanoidString.only_deleted.where(id: ps).count
517
- end
518
-
519
- def test_string_type_with_no_nil_value_after_destroy_only_deleted
520
- ps = ParanoidString.create!(deleted: "not dead")
521
- ps.destroy
522
- assert_equal 1, ParanoidString.only_deleted.where(id: ps).count
523
- end
524
-
525
- def test_string_type_with_no_nil_value_after_destroyed_twice
526
- ps = ParanoidString.create!(deleted: "not dead")
527
- 2.times { ps.destroy }
528
- assert_equal 0, ParanoidString.with_deleted.where(id: ps).count
529
- end
530
-
531
- # Test boolean type columns, that are not nullable
532
- def test_boolean_type_with_no_nil_value_before_destroy
533
- ps = ParanoidBooleanNotNullable.create!
534
- assert_equal 1, ParanoidBooleanNotNullable.where(id: ps).count
535
- end
536
-
537
- def test_boolean_type_with_no_nil_value_after_destroy
538
- ps = ParanoidBooleanNotNullable.create!
539
- ps.destroy
540
- assert_equal 0, ParanoidBooleanNotNullable.where(id: ps).count
541
- end
542
-
543
- def test_boolean_type_with_no_nil_value_before_destroy_with_deleted
544
- ps = ParanoidBooleanNotNullable.create!
545
- assert_equal 1, ParanoidBooleanNotNullable.with_deleted.where(id: ps).count
546
- end
547
-
548
- def test_boolean_type_with_no_nil_value_after_destroy_with_deleted
549
- ps = ParanoidBooleanNotNullable.create!
550
- ps.destroy
551
- assert_equal 1, ParanoidBooleanNotNullable.with_deleted.where(id: ps).count
552
- end
553
-
554
- def test_boolean_type_with_no_nil_value_before_destroy_only_deleted
555
- ps = ParanoidBooleanNotNullable.create!
556
- assert_equal 0, ParanoidBooleanNotNullable.only_deleted.where(id: ps).count
557
- end
558
-
559
- def test_boolean_type_with_no_nil_value_after_destroy_only_deleted
560
- ps = ParanoidBooleanNotNullable.create!
561
- ps.destroy
562
- assert_equal 1, ParanoidBooleanNotNullable.only_deleted.where(id: ps).count
563
- end
564
-
565
- def test_boolean_type_with_no_nil_value_after_destroyed_twice
566
- ps = ParanoidBooleanNotNullable.create!
567
- 2.times { ps.destroy }
568
- assert_equal 0, ParanoidBooleanNotNullable.with_deleted.where(id: ps).count
569
- end
570
-
571
- def test_boolean_type_with_no_nil_value_after_recover
572
- ps = ParanoidBooleanNotNullable.create!
573
- ps.destroy
574
- assert_equal 1, ParanoidBooleanNotNullable.only_deleted.where(id: ps).count
575
-
576
- ps.recover
577
- assert_equal 1, ParanoidBooleanNotNullable.where(id: ps).count
578
- end
579
-
580
- def test_boolean_type_with_no_nil_value_after_recover!
581
- ps = ParanoidBooleanNotNullable.create!
582
- ps.destroy
583
- assert_equal 1, ParanoidBooleanNotNullable.only_deleted.where(id: ps).count
584
-
585
- ps.recover!
586
- assert_equal 1, ParanoidBooleanNotNullable.where(id: ps).count
587
- end
588
-
589
- def test_no_double_tap_destroys_fully
590
- ps = ParanoidNoDoubleTapDestroysFully.create!
591
- 2.times { ps.destroy }
592
- assert_equal 1, ParanoidNoDoubleTapDestroysFully.with_deleted.where(id: ps).count
593
- end
594
-
595
- def test_decrement_counters_without_touch
596
- paranoid_boolean = ParanoidBoolean.create!
597
- paranoid_with_counter_cache = ParanoidWithCounterCache
598
- .create!(paranoid_boolean: paranoid_boolean)
599
-
600
- assert_equal 1, paranoid_boolean.paranoid_with_counter_caches_count
601
- updated_at = paranoid_boolean.reload.updated_at
602
-
603
- paranoid_with_counter_cache.destroy
604
-
605
- assert_equal 0, paranoid_boolean.reload.paranoid_with_counter_caches_count
606
- assert_equal updated_at, paranoid_boolean.reload.updated_at
607
- end
608
-
609
- def test_decrement_custom_counters
610
- paranoid_boolean = ParanoidBoolean.create!
611
- paranoid_with_custom_counter_cache = ParanoidWithCustomCounterCache
612
- .create!(paranoid_boolean: paranoid_boolean)
613
-
614
- assert_equal 1, paranoid_boolean.custom_counter_cache
615
-
616
- paranoid_with_custom_counter_cache.destroy
617
-
618
- assert_equal 0, paranoid_boolean.reload.custom_counter_cache
619
- end
620
-
621
- def test_decrement_counters_with_touch
622
- paranoid_boolean = ParanoidBoolean.create!
623
- paranoid_with_counter_cache = ParanoidWithTouchAndCounterCache
624
- .create!(paranoid_boolean: paranoid_boolean)
625
-
626
- assert_equal 1, paranoid_boolean.paranoid_with_touch_and_counter_caches_count
627
- updated_at = paranoid_boolean.reload.updated_at
628
-
629
- paranoid_with_counter_cache.destroy
630
-
631
- assert_equal 0, paranoid_boolean.reload.paranoid_with_touch_and_counter_caches_count
632
- assert_not_equal updated_at, paranoid_boolean.reload.updated_at
633
- end
634
-
635
- def test_touch_belongs_to
636
- paranoid_boolean = ParanoidBoolean.create!
637
- paranoid_with_counter_cache = ParanoidWithTouch
638
- .create!(paranoid_boolean: paranoid_boolean)
639
-
640
- updated_at = paranoid_boolean.reload.updated_at
641
-
642
- paranoid_with_counter_cache.destroy
643
-
644
- assert_not_equal updated_at, paranoid_boolean.reload.updated_at
645
- end
646
-
647
- def test_destroy_with_optional_belongs_to_and_counter_cache
648
- ps = ParanoidWithCounterCacheOnOptionalBelognsTo.create!
649
- ps.destroy
650
- assert_equal 1, ParanoidWithCounterCacheOnOptionalBelognsTo.only_deleted
651
- .where(id: ps).count
652
- end
653
-
654
- def test_hard_destroy_decrement_counters
655
- paranoid_boolean = ParanoidBoolean.create!
656
- paranoid_with_counter_cache = ParanoidWithCounterCache
657
- .create!(paranoid_boolean: paranoid_boolean)
658
-
659
- assert_equal 1, paranoid_boolean.paranoid_with_counter_caches_count
660
-
661
- paranoid_with_counter_cache.destroy_fully!
662
-
663
- assert_equal 0, paranoid_boolean.reload.paranoid_with_counter_caches_count
664
- end
665
-
666
- def test_hard_destroy_decrement_custom_counters
667
- paranoid_boolean = ParanoidBoolean.create!
668
- paranoid_with_custom_counter_cache = ParanoidWithCustomCounterCache
669
- .create!(paranoid_boolean: paranoid_boolean)
670
-
671
- assert_equal 1, paranoid_boolean.custom_counter_cache
672
-
673
- paranoid_with_custom_counter_cache.destroy_fully!
674
-
675
- assert_equal 0, paranoid_boolean.reload.custom_counter_cache
676
- end
677
-
678
- def test_increment_counters
679
- paranoid_boolean = ParanoidBoolean.create!
680
- paranoid_with_counter_cache = ParanoidWithCounterCache
681
- .create!(paranoid_boolean: paranoid_boolean)
682
-
683
- assert_equal 1, paranoid_boolean.paranoid_with_counter_caches_count
684
-
685
- paranoid_with_counter_cache.destroy
686
-
687
- assert_equal 0, paranoid_boolean.reload.paranoid_with_counter_caches_count
688
-
689
- paranoid_with_counter_cache.recover
690
-
691
- assert_equal 1, paranoid_boolean.reload.paranoid_with_counter_caches_count
692
- end
693
-
694
- def test_increment_custom_counters
695
- paranoid_boolean = ParanoidBoolean.create!
696
- paranoid_with_custom_counter_cache = ParanoidWithCustomCounterCache
697
- .create!(paranoid_boolean: paranoid_boolean)
698
-
699
- assert_equal 1, paranoid_boolean.custom_counter_cache
700
-
701
- paranoid_with_custom_counter_cache.destroy
702
-
703
- assert_equal 0, paranoid_boolean.reload.custom_counter_cache
704
-
705
- paranoid_with_custom_counter_cache.recover
706
-
707
- assert_equal 1, paranoid_boolean.reload.custom_counter_cache
708
- end
709
-
710
- def test_explicitly_setting_table_name_after_acts_as_paranoid_macro
711
- assert_equal "explicit_table.deleted_at", ParanoidWithExplicitTableNameAfterMacro
712
- .paranoid_column_reference
713
- end
714
-
715
- def test_deleted_after_time
716
- ParanoidTime.first.destroy
717
- assert_equal 0, ParanoidTime.deleted_after_time(1.hour.from_now).count
718
- assert_equal 1, ParanoidTime.deleted_after_time(1.hour.ago).count
719
- end
720
-
721
- def test_deleted_before_time
722
- ParanoidTime.first.destroy
723
- assert_equal 1, ParanoidTime.deleted_before_time(1.hour.from_now).count
724
- assert_equal 0, ParanoidTime.deleted_before_time(1.hour.ago).count
725
- end
726
-
727
- def test_deleted_inside_time_window
728
- ParanoidTime.first.destroy
729
- assert_equal 1, ParanoidTime.deleted_inside_time_window(1.minute.ago, 2.minutes).count
730
- assert_equal 1,
731
- ParanoidTime.deleted_inside_time_window(1.minute.from_now, 2.minutes).count
732
- assert_equal 0, ParanoidTime.deleted_inside_time_window(3.minutes.ago, 1.minute).count
733
- assert_equal 0,
734
- ParanoidTime.deleted_inside_time_window(3.minutes.from_now, 1.minute).count
735
- end
736
- end