acts_as_paranoid 0.6.0 → 0.7.1
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 +4 -4
- data/CHANGELOG.md +128 -0
- data/README.md +154 -56
- data/lib/acts_as_paranoid.rb +34 -31
- data/lib/acts_as_paranoid/associations.rb +21 -17
- data/lib/acts_as_paranoid/core.rb +139 -58
- data/lib/acts_as_paranoid/relation.rb +2 -0
- data/lib/acts_as_paranoid/validations.rb +8 -69
- data/lib/acts_as_paranoid/version.rb +3 -1
- data/test/test_associations.rb +157 -38
- data/test/test_core.rb +269 -48
- data/test/test_default_scopes.rb +7 -6
- data/test/test_helper.rb +155 -62
- data/test/test_inheritance.rb +3 -1
- data/test/test_relations.rb +18 -10
- data/test/test_validations.rb +9 -7
- metadata +92 -33
- data/lib/acts_as_paranoid/preloader_association.rb +0 -16
- data/test/test_preloader_association.rb +0 -27
data/test/test_default_scopes.rb
CHANGED
@@ -1,14 +1,15 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "test_helper"
|
2
4
|
|
3
5
|
class MultipleDefaultScopesTest < ParanoidBaseTest
|
4
6
|
def setup
|
5
7
|
setup_db
|
6
8
|
|
7
|
-
|
8
|
-
ParanoidPolygon.create! :
|
9
|
-
ParanoidPolygon.create! :
|
10
|
-
ParanoidPolygon.create! :
|
11
|
-
ParanoidPolygon.create! :sides => 8
|
9
|
+
ParanoidPolygon.create! sides: 3
|
10
|
+
ParanoidPolygon.create! sides: 3
|
11
|
+
ParanoidPolygon.create! sides: 3
|
12
|
+
ParanoidPolygon.create! sides: 8
|
12
13
|
|
13
14
|
assert_equal 3, ParanoidPolygon.count
|
14
15
|
assert_equal 4, ParanoidPolygon.unscoped.count
|
data/test/test_helper.rb
CHANGED
@@ -1,23 +1,41 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "bundler"
|
2
4
|
begin
|
3
|
-
Bundler.
|
5
|
+
Bundler.load
|
4
6
|
rescue Bundler::BundlerError => e
|
5
|
-
|
6
|
-
|
7
|
+
warn e.message
|
8
|
+
warn "Run `bundle install` to install missing gems"
|
7
9
|
exit e.status_code
|
8
10
|
end
|
9
11
|
|
10
|
-
|
11
|
-
|
12
|
+
if RUBY_ENGINE == "jruby"
|
13
|
+
# Workaround for issue in I18n/JRuby combo.
|
14
|
+
# See https://github.com/jruby/jruby/issues/6547 and
|
15
|
+
# https://github.com/ruby-i18n/i18n/issues/555
|
16
|
+
require "i18n/backend"
|
17
|
+
require "i18n/backend/simple"
|
18
|
+
end
|
19
|
+
|
20
|
+
require "simplecov"
|
21
|
+
SimpleCov.start do
|
22
|
+
enable_coverage :branch
|
23
|
+
end
|
24
|
+
|
25
|
+
require "acts_as_paranoid"
|
26
|
+
require "minitest/autorun"
|
27
|
+
require "minitest/focus"
|
12
28
|
|
13
29
|
# Silence deprecation halfway through the test
|
14
30
|
I18n.enforce_available_locales = true
|
15
31
|
|
16
|
-
ActiveRecord::Base.establish_connection(:
|
32
|
+
ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:")
|
17
33
|
ActiveRecord::Schema.verbose = false
|
18
34
|
|
35
|
+
# rubocop:disable Metrics/AbcSize
|
36
|
+
# rubocop:disable Metrics/MethodLength
|
19
37
|
def setup_db
|
20
|
-
ActiveRecord::Schema.define(:
|
38
|
+
ActiveRecord::Schema.define(version: 1) do # rubocop:disable Metrics/BlockLength
|
21
39
|
create_table :paranoid_times do |t|
|
22
40
|
t.string :name
|
23
41
|
t.datetime :deleted_at
|
@@ -31,7 +49,9 @@ def setup_db
|
|
31
49
|
t.string :name
|
32
50
|
t.boolean :is_deleted
|
33
51
|
t.integer :paranoid_time_id
|
34
|
-
|
52
|
+
t.integer :paranoid_with_counter_caches_count
|
53
|
+
t.integer :paranoid_with_touch_and_counter_caches_count
|
54
|
+
t.integer :custom_counter_cache
|
35
55
|
timestamps t
|
36
56
|
end
|
37
57
|
|
@@ -111,14 +131,15 @@ def setup_db
|
|
111
131
|
|
112
132
|
create_table :super_paranoids do |t|
|
113
133
|
t.string :type
|
114
|
-
t.references :has_many_inherited_super_paranoidz,
|
134
|
+
t.references :has_many_inherited_super_paranoidz,
|
135
|
+
index: { name: "index__sp_id_on_has_many_isp" }
|
115
136
|
t.datetime :deleted_at
|
116
137
|
|
117
138
|
timestamps t
|
118
139
|
end
|
119
140
|
|
120
141
|
create_table :has_many_inherited_super_paranoidzs do |t|
|
121
|
-
t.references :super_paranoidz, index: { name:
|
142
|
+
t.references :super_paranoidz, index: { name: "index_has_many_isp_on_sp_id" }
|
122
143
|
t.datetime :deleted_at
|
123
144
|
|
124
145
|
timestamps t
|
@@ -148,7 +169,7 @@ def setup_db
|
|
148
169
|
timestamps t
|
149
170
|
end
|
150
171
|
|
151
|
-
|
172
|
+
create_table :paranoid_forests do |t|
|
152
173
|
t.string :name
|
153
174
|
t.boolean :rainforest
|
154
175
|
t.datetime :deleted_at
|
@@ -165,7 +186,7 @@ def setup_db
|
|
165
186
|
end
|
166
187
|
|
167
188
|
create_table :paranoid_polygons do |t|
|
168
|
-
t.integer
|
189
|
+
t.integer :sides
|
169
190
|
t.datetime :deleted_at
|
170
191
|
|
171
192
|
timestamps t
|
@@ -184,7 +205,7 @@ def setup_db
|
|
184
205
|
|
185
206
|
create_table :paranoid_boolean_not_nullables do |t|
|
186
207
|
t.string :name
|
187
|
-
t.boolean :deleted, :boolean, :
|
208
|
+
t.boolean :deleted, :boolean, null: false, default: false
|
188
209
|
end
|
189
210
|
|
190
211
|
create_table :paranoid_belongs_to_polymorphics do |t|
|
@@ -208,21 +229,32 @@ def setup_db
|
|
208
229
|
|
209
230
|
timestamps t
|
210
231
|
end
|
232
|
+
|
233
|
+
create_table :paranoid_no_double_tap_destroys_fullies do |t|
|
234
|
+
t.datetime :deleted_at
|
235
|
+
end
|
236
|
+
|
237
|
+
create_table :paranoid_with_counter_caches do |t|
|
238
|
+
t.string :name
|
239
|
+
t.datetime :deleted_at
|
240
|
+
t.integer :paranoid_boolean_id
|
241
|
+
|
242
|
+
timestamps t
|
243
|
+
end
|
211
244
|
end
|
212
245
|
end
|
246
|
+
# rubocop:enable Metrics/AbcSize
|
247
|
+
# rubocop:enable Metrics/MethodLength
|
213
248
|
|
214
249
|
def timestamps(table)
|
215
|
-
table.column :created_at
|
216
|
-
table.column :updated_at
|
250
|
+
table.column :created_at, :timestamp, null: false
|
251
|
+
table.column :updated_at, :timestamp, null: false
|
217
252
|
end
|
218
253
|
|
219
254
|
def teardown_db
|
220
|
-
|
221
|
-
ActiveRecord::Base.connection.
|
222
|
-
else
|
223
|
-
ActiveRecord::Base.connection.data_sources
|
255
|
+
ActiveRecord::Base.connection.data_sources.each do |table|
|
256
|
+
ActiveRecord::Base.connection.drop_table(table)
|
224
257
|
end
|
225
|
-
tables.each { |table| ActiveRecord::Base.connection.drop_table(table) }
|
226
258
|
end
|
227
259
|
|
228
260
|
class ParanoidTime < ActiveRecord::Base
|
@@ -230,49 +262,106 @@ class ParanoidTime < ActiveRecord::Base
|
|
230
262
|
|
231
263
|
validates_uniqueness_of :name
|
232
264
|
|
233
|
-
has_many :paranoid_has_many_dependants, :
|
234
|
-
has_many :paranoid_booleans, :
|
235
|
-
has_many :not_paranoids, :
|
236
|
-
has_many :paranoid_sections, :
|
265
|
+
has_many :paranoid_has_many_dependants, dependent: :destroy
|
266
|
+
has_many :paranoid_booleans, dependent: :destroy
|
267
|
+
has_many :not_paranoids, dependent: :delete_all
|
268
|
+
has_many :paranoid_sections, dependent: :destroy
|
237
269
|
|
238
|
-
has_one :has_one_not_paranoid, :
|
270
|
+
has_one :has_one_not_paranoid, dependent: :destroy
|
239
271
|
|
240
|
-
belongs_to :not_paranoid, :
|
272
|
+
belongs_to :not_paranoid, dependent: :destroy
|
241
273
|
end
|
242
274
|
|
243
275
|
class ParanoidBoolean < ActiveRecord::Base
|
244
|
-
acts_as_paranoid :
|
276
|
+
acts_as_paranoid column_type: "boolean", column: "is_deleted"
|
245
277
|
validates_as_paranoid
|
246
278
|
validates_uniqueness_of_without_deleted :name
|
247
279
|
|
248
280
|
belongs_to :paranoid_time
|
249
|
-
has_one :paranoid_has_one_dependant, :
|
281
|
+
has_one :paranoid_has_one_dependant, dependent: :destroy
|
282
|
+
has_many :paranoid_with_counter_cache, dependent: :destroy
|
283
|
+
has_many :paranoid_with_custom_counter_cache, dependent: :destroy
|
284
|
+
has_many :paranoid_with_touch_and_counter_cache, dependent: :destroy
|
285
|
+
has_many :paranoid_with_touch, dependent: :destroy
|
250
286
|
end
|
251
287
|
|
252
288
|
class ParanoidString < ActiveRecord::Base
|
253
|
-
acts_as_paranoid :
|
289
|
+
acts_as_paranoid column_type: "string", column: "deleted", deleted_value: "dead"
|
254
290
|
end
|
255
291
|
|
256
292
|
class NotParanoid < ActiveRecord::Base
|
257
293
|
end
|
258
294
|
|
295
|
+
class ParanoidNoDoubleTapDestroysFully < ActiveRecord::Base
|
296
|
+
acts_as_paranoid double_tap_destroys_fully: false
|
297
|
+
end
|
298
|
+
|
259
299
|
class HasOneNotParanoid < ActiveRecord::Base
|
260
|
-
belongs_to :paranoid_time, :
|
300
|
+
belongs_to :paranoid_time, with_deleted: true
|
261
301
|
end
|
262
302
|
|
263
303
|
class DoubleHasOneNotParanoid < HasOneNotParanoid
|
264
|
-
belongs_to :paranoid_time, :
|
265
|
-
|
304
|
+
belongs_to :paranoid_time, with_deleted: true
|
305
|
+
begin
|
306
|
+
verbose = $VERBOSE
|
307
|
+
$VERBOSE = false
|
308
|
+
belongs_to :paranoid_time, with_deleted: true
|
309
|
+
ensure
|
310
|
+
$VERBOSE = verbose
|
311
|
+
end
|
312
|
+
end
|
313
|
+
|
314
|
+
class ParanoidWithCounterCache < ActiveRecord::Base
|
315
|
+
acts_as_paranoid
|
316
|
+
belongs_to :paranoid_boolean, counter_cache: true
|
317
|
+
end
|
318
|
+
|
319
|
+
class ParanoidWithCustomCounterCache < ActiveRecord::Base
|
320
|
+
self.table_name = "paranoid_with_counter_caches"
|
321
|
+
|
322
|
+
acts_as_paranoid
|
323
|
+
belongs_to :paranoid_boolean, counter_cache: :custom_counter_cache
|
324
|
+
end
|
325
|
+
|
326
|
+
class ParanoidWithCounterCacheOnOptionalBelognsTo < ActiveRecord::Base
|
327
|
+
self.table_name = "paranoid_with_counter_caches"
|
328
|
+
|
329
|
+
acts_as_paranoid
|
330
|
+
if ActiveRecord::VERSION::MAJOR < 5
|
331
|
+
belongs_to :paranoid_boolean, counter_cache: true, required: false
|
332
|
+
else
|
333
|
+
belongs_to :paranoid_boolean, counter_cache: true, optional: true
|
334
|
+
end
|
335
|
+
end
|
336
|
+
|
337
|
+
class ParanoidWithTouch < ActiveRecord::Base
|
338
|
+
self.table_name = "paranoid_with_counter_caches"
|
339
|
+
acts_as_paranoid
|
340
|
+
belongs_to :paranoid_boolean, touch: true
|
341
|
+
end
|
342
|
+
|
343
|
+
class ParanoidWithTouchAndCounterCache < ActiveRecord::Base
|
344
|
+
self.table_name = "paranoid_with_counter_caches"
|
345
|
+
acts_as_paranoid
|
346
|
+
belongs_to :paranoid_boolean, touch: true, counter_cache: true
|
266
347
|
end
|
267
348
|
|
268
349
|
class ParanoidHasManyDependant < ActiveRecord::Base
|
269
350
|
acts_as_paranoid
|
270
351
|
belongs_to :paranoid_time
|
271
|
-
belongs_to :paranoid_time_with_scope,
|
272
|
-
|
273
|
-
|
352
|
+
belongs_to :paranoid_time_with_scope,
|
353
|
+
-> { where(name: "hello").includes(:not_paranoid) },
|
354
|
+
class_name: "ParanoidTime", foreign_key: :paranoid_time_id
|
355
|
+
belongs_to :paranoid_time_with_deleted, class_name: "ParanoidTime",
|
356
|
+
foreign_key: :paranoid_time_id, with_deleted: true
|
357
|
+
belongs_to :paranoid_time_with_scope_with_deleted,
|
358
|
+
-> { where(name: "hello").includes(:not_paranoid) },
|
359
|
+
class_name: "ParanoidTime", foreign_key: :paranoid_time_id, with_deleted: true
|
360
|
+
belongs_to :paranoid_time_polymorphic_with_deleted, class_name: "ParanoidTime",
|
361
|
+
foreign_key: :paranoid_time_id,
|
362
|
+
polymorphic: true, with_deleted: true
|
274
363
|
|
275
|
-
belongs_to :paranoid_belongs_dependant, :
|
364
|
+
belongs_to :paranoid_belongs_dependant, dependent: :destroy
|
276
365
|
end
|
277
366
|
|
278
367
|
class ParanoidBelongsDependant < ActiveRecord::Base
|
@@ -290,13 +379,14 @@ end
|
|
290
379
|
class ParanoidWithCallback < ActiveRecord::Base
|
291
380
|
acts_as_paranoid
|
292
381
|
|
293
|
-
attr_accessor :called_before_destroy, :called_after_destroy,
|
294
|
-
|
382
|
+
attr_accessor :called_before_destroy, :called_after_destroy,
|
383
|
+
:called_after_commit_on_destroy, :called_before_recover,
|
384
|
+
:called_after_recover
|
295
385
|
|
296
386
|
before_destroy :call_me_before_destroy
|
297
387
|
after_destroy :call_me_after_destroy
|
298
388
|
|
299
|
-
after_commit :call_me_after_commit_on_destroy, :
|
389
|
+
after_commit :call_me_after_commit_on_destroy, on: :destroy
|
300
390
|
|
301
391
|
before_recover :call_me_before_recover
|
302
392
|
after_recover :call_me_after_recover
|
@@ -329,14 +419,14 @@ end
|
|
329
419
|
|
330
420
|
class ParanoidDestroyCompany < ActiveRecord::Base
|
331
421
|
acts_as_paranoid
|
332
|
-
validates :name, :
|
333
|
-
has_many :paranoid_products, :
|
422
|
+
validates :name, presence: true
|
423
|
+
has_many :paranoid_products, dependent: :destroy
|
334
424
|
end
|
335
425
|
|
336
426
|
class ParanoidDeleteCompany < ActiveRecord::Base
|
337
427
|
acts_as_paranoid
|
338
|
-
validates :name, :
|
339
|
-
has_many :paranoid_products, :
|
428
|
+
validates :name, presence: true
|
429
|
+
has_many :paranoid_products, dependent: :delete_all
|
340
430
|
end
|
341
431
|
|
342
432
|
class ParanoidProduct < ActiveRecord::Base
|
@@ -352,22 +442,21 @@ class SuperParanoid < ActiveRecord::Base
|
|
352
442
|
end
|
353
443
|
|
354
444
|
class HasManyInheritedSuperParanoidz < ActiveRecord::Base
|
355
|
-
has_many :super_paranoidz, :
|
445
|
+
has_many :super_paranoidz, class_name: "InheritedParanoid", dependent: :destroy
|
356
446
|
end
|
357
447
|
|
358
448
|
class InheritedParanoid < SuperParanoid
|
359
449
|
acts_as_paranoid
|
360
450
|
end
|
361
451
|
|
362
|
-
|
363
452
|
class ParanoidManyManyParentLeft < ActiveRecord::Base
|
364
453
|
has_many :paranoid_many_many_children
|
365
|
-
has_many :paranoid_many_many_parent_rights, :
|
454
|
+
has_many :paranoid_many_many_parent_rights, through: :paranoid_many_many_children
|
366
455
|
end
|
367
456
|
|
368
457
|
class ParanoidManyManyParentRight < ActiveRecord::Base
|
369
458
|
has_many :paranoid_many_many_children
|
370
|
-
has_many :paranoid_many_many_parent_lefts, :
|
459
|
+
has_many :paranoid_many_many_parent_lefts, through: :paranoid_many_many_children
|
371
460
|
end
|
372
461
|
|
373
462
|
class ParanoidManyManyChild < ActiveRecord::Base
|
@@ -378,21 +467,21 @@ end
|
|
378
467
|
|
379
468
|
class ParanoidWithScopedValidation < ActiveRecord::Base
|
380
469
|
acts_as_paranoid
|
381
|
-
validates_uniqueness_of :name, :
|
470
|
+
validates_uniqueness_of :name, scope: :category
|
382
471
|
end
|
383
472
|
|
384
473
|
class ParanoidBelongsToPolymorphic < ActiveRecord::Base
|
385
474
|
acts_as_paranoid
|
386
|
-
belongs_to :parent, :
|
475
|
+
belongs_to :parent, polymorphic: true, with_deleted: true
|
387
476
|
end
|
388
477
|
|
389
478
|
class NotParanoidHasManyAsParent < ActiveRecord::Base
|
390
|
-
has_many :paranoid_belongs_to_polymorphics, :
|
479
|
+
has_many :paranoid_belongs_to_polymorphics, as: :parent, dependent: :destroy
|
391
480
|
end
|
392
481
|
|
393
482
|
class ParanoidHasManyAsParent < ActiveRecord::Base
|
394
483
|
acts_as_paranoid
|
395
|
-
has_many :paranoid_belongs_to_polymorphics, :
|
484
|
+
has_many :paranoid_belongs_to_polymorphics, as: :parent, dependent: :destroy
|
396
485
|
end
|
397
486
|
|
398
487
|
class ParanoidBaseTest < ActiveSupport::TestCase
|
@@ -400,13 +489,13 @@ class ParanoidBaseTest < ActiveSupport::TestCase
|
|
400
489
|
setup_db
|
401
490
|
|
402
491
|
["paranoid", "really paranoid", "extremely paranoid"].each do |name|
|
403
|
-
ParanoidTime.create! :
|
404
|
-
ParanoidBoolean.create! :
|
492
|
+
ParanoidTime.create! name: name
|
493
|
+
ParanoidBoolean.create! name: name
|
405
494
|
end
|
406
495
|
|
407
|
-
ParanoidString.create! :
|
408
|
-
NotParanoid.create! :
|
409
|
-
ParanoidWithCallback.create! :
|
496
|
+
ParanoidString.create! name: "strings can be paranoid"
|
497
|
+
NotParanoid.create! name: "no paranoid goals"
|
498
|
+
ParanoidWithCallback.create! name: "paranoid with callbacks"
|
410
499
|
end
|
411
500
|
|
412
501
|
def teardown
|
@@ -440,9 +529,9 @@ class ParanoidForest < ActiveRecord::Base
|
|
440
529
|
|
441
530
|
ActiveRecord::Base.logger = Logger.new(StringIO.new)
|
442
531
|
|
443
|
-
scope :rainforest,
|
532
|
+
scope :rainforest, -> { where(rainforest: true) }
|
444
533
|
|
445
|
-
has_many :paranoid_trees, :
|
534
|
+
has_many :paranoid_trees, dependent: :destroy
|
446
535
|
end
|
447
536
|
|
448
537
|
class ParanoidTree < ActiveRecord::Base
|
@@ -453,7 +542,7 @@ end
|
|
453
542
|
|
454
543
|
class ParanoidPolygon < ActiveRecord::Base
|
455
544
|
acts_as_paranoid
|
456
|
-
default_scope { where(
|
545
|
+
default_scope { where("sides = ?", 3) }
|
457
546
|
end
|
458
547
|
|
459
548
|
class ParanoidAndroid < ActiveRecord::Base
|
@@ -463,10 +552,14 @@ end
|
|
463
552
|
class ParanoidSection < ActiveRecord::Base
|
464
553
|
acts_as_paranoid
|
465
554
|
belongs_to :paranoid_time
|
466
|
-
belongs_to :paranoid_thing, :
|
555
|
+
belongs_to :paranoid_thing, polymorphic: true, dependent: :destroy
|
467
556
|
end
|
468
557
|
|
469
558
|
class ParanoidBooleanNotNullable < ActiveRecord::Base
|
470
|
-
acts_as_paranoid column:
|
559
|
+
acts_as_paranoid column: "deleted", column_type: "boolean", allow_nulls: false
|
471
560
|
end
|
472
561
|
|
562
|
+
class ParanoidWithExplicitTableNameAfterMacro < ActiveRecord::Base
|
563
|
+
acts_as_paranoid
|
564
|
+
self.table_name = "explicit_table"
|
565
|
+
end
|
data/test/test_inheritance.rb
CHANGED
data/test/test_relations.rb
CHANGED
@@ -1,20 +1,22 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "test_helper"
|
2
4
|
|
3
5
|
class RelationsTest < ParanoidBaseTest
|
4
6
|
def setup
|
5
7
|
setup_db
|
6
8
|
|
7
|
-
@paranoid_forest_1 = ParanoidForest.create! :
|
8
|
-
@paranoid_forest_2 = ParanoidForest.create! :
|
9
|
-
@paranoid_forest_3 = ParanoidForest.create! :
|
9
|
+
@paranoid_forest_1 = ParanoidForest.create! name: "ParanoidForest #1"
|
10
|
+
@paranoid_forest_2 = ParanoidForest.create! name: "ParanoidForest #2", rainforest: true
|
11
|
+
@paranoid_forest_3 = ParanoidForest.create! name: "ParanoidForest #3", rainforest: true
|
10
12
|
|
11
13
|
assert_equal 3, ParanoidForest.count
|
12
14
|
assert_equal 2, ParanoidForest.rainforest.count
|
13
15
|
|
14
|
-
@paranoid_forest_1.paranoid_trees.create! :
|
15
|
-
@paranoid_forest_1.paranoid_trees.create! :
|
16
|
-
@paranoid_forest_2.paranoid_trees.create! :
|
17
|
-
@paranoid_forest_2.paranoid_trees.create! :
|
16
|
+
@paranoid_forest_1.paranoid_trees.create! name: "ParanoidTree #1"
|
17
|
+
@paranoid_forest_1.paranoid_trees.create! name: "ParanoidTree #2"
|
18
|
+
@paranoid_forest_2.paranoid_trees.create! name: "ParanoidTree #3"
|
19
|
+
@paranoid_forest_2.paranoid_trees.create! name: "ParanoidTree #4"
|
18
20
|
|
19
21
|
assert_equal 4, ParanoidTree.count
|
20
22
|
end
|
@@ -86,13 +88,15 @@ class RelationsTest < ParanoidBaseTest
|
|
86
88
|
assert_equal 2, @paranoid_forest_2.paranoid_trees.with_deleted.count
|
87
89
|
end
|
88
90
|
|
89
|
-
def
|
90
|
-
# destroy!: aliased to delete
|
91
|
+
def test_real_removal_through_relation_with_destroy_bang
|
92
|
+
# Relation.destroy!: aliased to delete
|
91
93
|
ParanoidForest.rainforest.destroy!(@paranoid_forest_3)
|
92
94
|
assert_equal 1, ParanoidForest.rainforest.count
|
93
95
|
assert_equal 1, ParanoidForest.rainforest.with_deleted.count
|
94
96
|
assert_equal 0, ParanoidForest.rainforest.only_deleted.count
|
97
|
+
end
|
95
98
|
|
99
|
+
def test_two_step_real_removal_through_relation_with_destroy
|
96
100
|
# destroy: two-step through a relation
|
97
101
|
paranoid_tree = @paranoid_forest_1.paranoid_trees.first
|
98
102
|
@paranoid_forest_1.paranoid_trees.order(:id).destroy(paranoid_tree.id)
|
@@ -100,14 +104,18 @@ class RelationsTest < ParanoidBaseTest
|
|
100
104
|
assert_equal 1, @paranoid_forest_1.paranoid_trees.count
|
101
105
|
assert_equal 1, @paranoid_forest_1.paranoid_trees.with_deleted.count
|
102
106
|
assert_equal 0, @paranoid_forest_1.paranoid_trees.only_deleted.count
|
107
|
+
end
|
103
108
|
|
109
|
+
def test_two_step_real_removal_through_relation_with_destroy_all
|
104
110
|
# destroy_all: two-step through a relation
|
105
111
|
@paranoid_forest_1.paranoid_trees.order(:id).destroy_all
|
106
112
|
@paranoid_forest_1.paranoid_trees.only_deleted.destroy_all
|
107
113
|
assert_equal 0, @paranoid_forest_1.paranoid_trees.count
|
108
114
|
assert_equal 0, @paranoid_forest_1.paranoid_trees.with_deleted.count
|
109
115
|
assert_equal 0, @paranoid_forest_1.paranoid_trees.only_deleted.count
|
116
|
+
end
|
110
117
|
|
118
|
+
def test_real_removal_through_relation_with_delete_all_bang
|
111
119
|
# delete_all!: through a relation
|
112
120
|
@paranoid_forest_2.paranoid_trees.order(:id).delete_all!
|
113
121
|
assert_equal 0, @paranoid_forest_2.paranoid_trees.count
|