acts_as_paranoid 0.6.3 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +69 -16
- data/README.md +130 -68
- data/lib/acts_as_paranoid.rb +31 -30
- data/lib/acts_as_paranoid/associations.rb +21 -17
- data/lib/acts_as_paranoid/core.rb +87 -77
- data/lib/acts_as_paranoid/relation.rb +2 -0
- data/lib/acts_as_paranoid/validations.rb +8 -74
- data/lib/acts_as_paranoid/version.rb +3 -1
- data/test/test_associations.rb +119 -43
- data/test/test_core.rb +90 -66
- data/test/test_default_scopes.rb +7 -5
- data/test/test_helper.rb +87 -65
- data/test/test_inheritance.rb +3 -1
- data/test/test_relations.rb +18 -10
- data/test/test_validations.rb +9 -7
- metadata +57 -26
- 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,13 +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
|
-
ParanoidPolygon.create! :
|
8
|
-
ParanoidPolygon.create! :
|
9
|
-
ParanoidPolygon.create! :
|
10
|
-
ParanoidPolygon.create! :
|
9
|
+
ParanoidPolygon.create! sides: 3
|
10
|
+
ParanoidPolygon.create! sides: 3
|
11
|
+
ParanoidPolygon.create! sides: 3
|
12
|
+
ParanoidPolygon.create! sides: 8
|
11
13
|
|
12
14
|
assert_equal 3, ParanoidPolygon.count
|
13
15
|
assert_equal 4, ParanoidPolygon.unscoped.count
|
data/test/test_helper.rb
CHANGED
@@ -1,23 +1,32 @@
|
|
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
|
-
require
|
11
|
-
|
12
|
+
require "simplecov"
|
13
|
+
SimpleCov.start do
|
14
|
+
enable_coverage :branch
|
15
|
+
end
|
16
|
+
|
17
|
+
require "acts_as_paranoid"
|
18
|
+
require "minitest/autorun"
|
12
19
|
|
13
20
|
# Silence deprecation halfway through the test
|
14
21
|
I18n.enforce_available_locales = true
|
15
22
|
|
16
|
-
ActiveRecord::Base.establish_connection(:
|
23
|
+
ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:")
|
17
24
|
ActiveRecord::Schema.verbose = false
|
18
25
|
|
26
|
+
# rubocop:disable Metrics/AbcSize
|
27
|
+
# rubocop:disable Metrics/MethodLength
|
19
28
|
def setup_db
|
20
|
-
ActiveRecord::Schema.define(:
|
29
|
+
ActiveRecord::Schema.define(version: 1) do # rubocop:disable Metrics/BlockLength
|
21
30
|
create_table :paranoid_times do |t|
|
22
31
|
t.string :name
|
23
32
|
t.datetime :deleted_at
|
@@ -112,14 +121,15 @@ def setup_db
|
|
112
121
|
|
113
122
|
create_table :super_paranoids do |t|
|
114
123
|
t.string :type
|
115
|
-
t.references :has_many_inherited_super_paranoidz,
|
124
|
+
t.references :has_many_inherited_super_paranoidz,
|
125
|
+
index: { name: "index__sp_id_on_has_many_isp" }
|
116
126
|
t.datetime :deleted_at
|
117
127
|
|
118
128
|
timestamps t
|
119
129
|
end
|
120
130
|
|
121
131
|
create_table :has_many_inherited_super_paranoidzs do |t|
|
122
|
-
t.references :super_paranoidz, index: { name:
|
132
|
+
t.references :super_paranoidz, index: { name: "index_has_many_isp_on_sp_id" }
|
123
133
|
t.datetime :deleted_at
|
124
134
|
|
125
135
|
timestamps t
|
@@ -166,7 +176,7 @@ def setup_db
|
|
166
176
|
end
|
167
177
|
|
168
178
|
create_table :paranoid_polygons do |t|
|
169
|
-
t.integer
|
179
|
+
t.integer :sides
|
170
180
|
t.datetime :deleted_at
|
171
181
|
|
172
182
|
timestamps t
|
@@ -185,7 +195,7 @@ def setup_db
|
|
185
195
|
|
186
196
|
create_table :paranoid_boolean_not_nullables do |t|
|
187
197
|
t.string :name
|
188
|
-
t.boolean :deleted, :boolean, :
|
198
|
+
t.boolean :deleted, :boolean, null: false, default: false
|
189
199
|
end
|
190
200
|
|
191
201
|
create_table :paranoid_belongs_to_polymorphics do |t|
|
@@ -223,19 +233,18 @@ def setup_db
|
|
223
233
|
end
|
224
234
|
end
|
225
235
|
end
|
236
|
+
# rubocop:enable Metrics/AbcSize
|
237
|
+
# rubocop:enable Metrics/MethodLength
|
226
238
|
|
227
239
|
def timestamps(table)
|
228
|
-
table.column :created_at
|
229
|
-
table.column :updated_at
|
240
|
+
table.column :created_at, :timestamp, null: false
|
241
|
+
table.column :updated_at, :timestamp, null: false
|
230
242
|
end
|
231
243
|
|
232
244
|
def teardown_db
|
233
|
-
|
234
|
-
ActiveRecord::Base.connection.
|
235
|
-
else
|
236
|
-
ActiveRecord::Base.connection.data_sources
|
245
|
+
ActiveRecord::Base.connection.data_sources.each do |table|
|
246
|
+
ActiveRecord::Base.connection.drop_table(table)
|
237
247
|
end
|
238
|
-
tables.each { |table| ActiveRecord::Base.connection.drop_table(table) }
|
239
248
|
end
|
240
249
|
|
241
250
|
class ParanoidTime < ActiveRecord::Base
|
@@ -243,50 +252,56 @@ class ParanoidTime < ActiveRecord::Base
|
|
243
252
|
|
244
253
|
validates_uniqueness_of :name
|
245
254
|
|
246
|
-
has_many :paranoid_has_many_dependants, :
|
247
|
-
has_many :paranoid_booleans, :
|
248
|
-
has_many :not_paranoids, :
|
249
|
-
has_many :paranoid_sections, :
|
255
|
+
has_many :paranoid_has_many_dependants, dependent: :destroy
|
256
|
+
has_many :paranoid_booleans, dependent: :destroy
|
257
|
+
has_many :not_paranoids, dependent: :delete_all
|
258
|
+
has_many :paranoid_sections, dependent: :destroy
|
250
259
|
|
251
|
-
has_one :has_one_not_paranoid, :
|
260
|
+
has_one :has_one_not_paranoid, dependent: :destroy
|
252
261
|
|
253
|
-
belongs_to :not_paranoid, :
|
262
|
+
belongs_to :not_paranoid, dependent: :destroy
|
254
263
|
end
|
255
264
|
|
256
265
|
class ParanoidBoolean < ActiveRecord::Base
|
257
|
-
acts_as_paranoid :
|
266
|
+
acts_as_paranoid column_type: "boolean", column: "is_deleted"
|
258
267
|
validates_as_paranoid
|
259
268
|
validates_uniqueness_of_without_deleted :name
|
260
269
|
|
261
270
|
belongs_to :paranoid_time
|
262
|
-
has_one :paranoid_has_one_dependant, :
|
263
|
-
has_many :paranoid_with_counter_cache, :
|
264
|
-
has_many :paranoid_with_custom_counter_cache, :
|
271
|
+
has_one :paranoid_has_one_dependant, dependent: :destroy
|
272
|
+
has_many :paranoid_with_counter_cache, dependent: :destroy
|
273
|
+
has_many :paranoid_with_custom_counter_cache, dependent: :destroy
|
265
274
|
end
|
266
275
|
|
267
276
|
class ParanoidString < ActiveRecord::Base
|
268
|
-
acts_as_paranoid :
|
277
|
+
acts_as_paranoid column_type: "string", column: "deleted", deleted_value: "dead"
|
269
278
|
end
|
270
279
|
|
271
280
|
class NotParanoid < ActiveRecord::Base
|
272
281
|
end
|
273
282
|
|
274
283
|
class ParanoidNoDoubleTapDestroysFully < ActiveRecord::Base
|
275
|
-
acts_as_paranoid :
|
284
|
+
acts_as_paranoid double_tap_destroys_fully: false
|
276
285
|
end
|
277
286
|
|
278
287
|
class HasOneNotParanoid < ActiveRecord::Base
|
279
|
-
belongs_to :paranoid_time, :
|
288
|
+
belongs_to :paranoid_time, with_deleted: true
|
280
289
|
end
|
281
290
|
|
282
291
|
class DoubleHasOneNotParanoid < HasOneNotParanoid
|
283
|
-
belongs_to :paranoid_time, :
|
284
|
-
|
292
|
+
belongs_to :paranoid_time, with_deleted: true
|
293
|
+
begin
|
294
|
+
verbose = $VERBOSE
|
295
|
+
$VERBOSE = false
|
296
|
+
belongs_to :paranoid_time, with_deleted: true
|
297
|
+
ensure
|
298
|
+
$VERBOSE = verbose
|
299
|
+
end
|
285
300
|
end
|
286
301
|
|
287
302
|
class ParanoidWithCounterCache < ActiveRecord::Base
|
288
303
|
acts_as_paranoid
|
289
|
-
belongs_to :paranoid_boolean, :
|
304
|
+
belongs_to :paranoid_boolean, counter_cache: true
|
290
305
|
end
|
291
306
|
|
292
307
|
class ParanoidWithCustomCounterCache < ActiveRecord::Base
|
@@ -310,12 +325,19 @@ end
|
|
310
325
|
class ParanoidHasManyDependant < ActiveRecord::Base
|
311
326
|
acts_as_paranoid
|
312
327
|
belongs_to :paranoid_time
|
313
|
-
belongs_to :paranoid_time_with_scope,
|
314
|
-
|
315
|
-
|
316
|
-
belongs_to :
|
328
|
+
belongs_to :paranoid_time_with_scope,
|
329
|
+
-> { where(name: "hello").includes(:not_paranoid) },
|
330
|
+
class_name: "ParanoidTime", foreign_key: :paranoid_time_id
|
331
|
+
belongs_to :paranoid_time_with_deleted, class_name: "ParanoidTime",
|
332
|
+
foreign_key: :paranoid_time_id, with_deleted: true
|
333
|
+
belongs_to :paranoid_time_with_scope_with_deleted,
|
334
|
+
-> { where(name: "hello").includes(:not_paranoid) },
|
335
|
+
class_name: "ParanoidTime", foreign_key: :paranoid_time_id, with_deleted: true
|
336
|
+
belongs_to :paranoid_time_polymorphic_with_deleted, class_name: "ParanoidTime",
|
337
|
+
foreign_key: :paranoid_time_id,
|
338
|
+
polymorphic: true, with_deleted: true
|
317
339
|
|
318
|
-
belongs_to :paranoid_belongs_dependant, :
|
340
|
+
belongs_to :paranoid_belongs_dependant, dependent: :destroy
|
319
341
|
end
|
320
342
|
|
321
343
|
class ParanoidBelongsDependant < ActiveRecord::Base
|
@@ -333,13 +355,14 @@ end
|
|
333
355
|
class ParanoidWithCallback < ActiveRecord::Base
|
334
356
|
acts_as_paranoid
|
335
357
|
|
336
|
-
attr_accessor :called_before_destroy, :called_after_destroy,
|
337
|
-
|
358
|
+
attr_accessor :called_before_destroy, :called_after_destroy,
|
359
|
+
:called_after_commit_on_destroy, :called_before_recover,
|
360
|
+
:called_after_recover
|
338
361
|
|
339
362
|
before_destroy :call_me_before_destroy
|
340
363
|
after_destroy :call_me_after_destroy
|
341
364
|
|
342
|
-
after_commit :call_me_after_commit_on_destroy, :
|
365
|
+
after_commit :call_me_after_commit_on_destroy, on: :destroy
|
343
366
|
|
344
367
|
before_recover :call_me_before_recover
|
345
368
|
after_recover :call_me_after_recover
|
@@ -372,14 +395,14 @@ end
|
|
372
395
|
|
373
396
|
class ParanoidDestroyCompany < ActiveRecord::Base
|
374
397
|
acts_as_paranoid
|
375
|
-
validates :name, :
|
376
|
-
has_many :paranoid_products, :
|
398
|
+
validates :name, presence: true
|
399
|
+
has_many :paranoid_products, dependent: :destroy
|
377
400
|
end
|
378
401
|
|
379
402
|
class ParanoidDeleteCompany < ActiveRecord::Base
|
380
403
|
acts_as_paranoid
|
381
|
-
validates :name, :
|
382
|
-
has_many :paranoid_products, :
|
404
|
+
validates :name, presence: true
|
405
|
+
has_many :paranoid_products, dependent: :delete_all
|
383
406
|
end
|
384
407
|
|
385
408
|
class ParanoidProduct < ActiveRecord::Base
|
@@ -395,22 +418,21 @@ class SuperParanoid < ActiveRecord::Base
|
|
395
418
|
end
|
396
419
|
|
397
420
|
class HasManyInheritedSuperParanoidz < ActiveRecord::Base
|
398
|
-
has_many :super_paranoidz, :
|
421
|
+
has_many :super_paranoidz, class_name: "InheritedParanoid", dependent: :destroy
|
399
422
|
end
|
400
423
|
|
401
424
|
class InheritedParanoid < SuperParanoid
|
402
425
|
acts_as_paranoid
|
403
426
|
end
|
404
427
|
|
405
|
-
|
406
428
|
class ParanoidManyManyParentLeft < ActiveRecord::Base
|
407
429
|
has_many :paranoid_many_many_children
|
408
|
-
has_many :paranoid_many_many_parent_rights, :
|
430
|
+
has_many :paranoid_many_many_parent_rights, through: :paranoid_many_many_children
|
409
431
|
end
|
410
432
|
|
411
433
|
class ParanoidManyManyParentRight < ActiveRecord::Base
|
412
434
|
has_many :paranoid_many_many_children
|
413
|
-
has_many :paranoid_many_many_parent_lefts, :
|
435
|
+
has_many :paranoid_many_many_parent_lefts, through: :paranoid_many_many_children
|
414
436
|
end
|
415
437
|
|
416
438
|
class ParanoidManyManyChild < ActiveRecord::Base
|
@@ -421,21 +443,21 @@ end
|
|
421
443
|
|
422
444
|
class ParanoidWithScopedValidation < ActiveRecord::Base
|
423
445
|
acts_as_paranoid
|
424
|
-
validates_uniqueness_of :name, :
|
446
|
+
validates_uniqueness_of :name, scope: :category
|
425
447
|
end
|
426
448
|
|
427
449
|
class ParanoidBelongsToPolymorphic < ActiveRecord::Base
|
428
450
|
acts_as_paranoid
|
429
|
-
belongs_to :parent, :
|
451
|
+
belongs_to :parent, polymorphic: true, with_deleted: true
|
430
452
|
end
|
431
453
|
|
432
454
|
class NotParanoidHasManyAsParent < ActiveRecord::Base
|
433
|
-
has_many :paranoid_belongs_to_polymorphics, :
|
455
|
+
has_many :paranoid_belongs_to_polymorphics, as: :parent, dependent: :destroy
|
434
456
|
end
|
435
457
|
|
436
458
|
class ParanoidHasManyAsParent < ActiveRecord::Base
|
437
459
|
acts_as_paranoid
|
438
|
-
has_many :paranoid_belongs_to_polymorphics, :
|
460
|
+
has_many :paranoid_belongs_to_polymorphics, as: :parent, dependent: :destroy
|
439
461
|
end
|
440
462
|
|
441
463
|
class ParanoidBaseTest < ActiveSupport::TestCase
|
@@ -443,13 +465,13 @@ class ParanoidBaseTest < ActiveSupport::TestCase
|
|
443
465
|
setup_db
|
444
466
|
|
445
467
|
["paranoid", "really paranoid", "extremely paranoid"].each do |name|
|
446
|
-
ParanoidTime.create! :
|
447
|
-
ParanoidBoolean.create! :
|
468
|
+
ParanoidTime.create! name: name
|
469
|
+
ParanoidBoolean.create! name: name
|
448
470
|
end
|
449
471
|
|
450
|
-
ParanoidString.create! :
|
451
|
-
NotParanoid.create! :
|
452
|
-
ParanoidWithCallback.create! :
|
472
|
+
ParanoidString.create! name: "strings can be paranoid"
|
473
|
+
NotParanoid.create! name: "no paranoid goals"
|
474
|
+
ParanoidWithCallback.create! name: "paranoid with callbacks"
|
453
475
|
end
|
454
476
|
|
455
477
|
def teardown
|
@@ -483,9 +505,9 @@ class ParanoidForest < ActiveRecord::Base
|
|
483
505
|
|
484
506
|
ActiveRecord::Base.logger = Logger.new(StringIO.new)
|
485
507
|
|
486
|
-
scope :rainforest,
|
508
|
+
scope :rainforest, -> { where(rainforest: true) }
|
487
509
|
|
488
|
-
has_many :paranoid_trees, :
|
510
|
+
has_many :paranoid_trees, dependent: :destroy
|
489
511
|
end
|
490
512
|
|
491
513
|
class ParanoidTree < ActiveRecord::Base
|
@@ -496,7 +518,7 @@ end
|
|
496
518
|
|
497
519
|
class ParanoidPolygon < ActiveRecord::Base
|
498
520
|
acts_as_paranoid
|
499
|
-
default_scope { where(
|
521
|
+
default_scope { where("sides = ?", 3) }
|
500
522
|
end
|
501
523
|
|
502
524
|
class ParanoidAndroid < ActiveRecord::Base
|
@@ -506,11 +528,11 @@ end
|
|
506
528
|
class ParanoidSection < ActiveRecord::Base
|
507
529
|
acts_as_paranoid
|
508
530
|
belongs_to :paranoid_time
|
509
|
-
belongs_to :paranoid_thing, :
|
531
|
+
belongs_to :paranoid_thing, polymorphic: true, dependent: :destroy
|
510
532
|
end
|
511
533
|
|
512
534
|
class ParanoidBooleanNotNullable < ActiveRecord::Base
|
513
|
-
acts_as_paranoid column:
|
535
|
+
acts_as_paranoid column: "deleted", column_type: "boolean", allow_nulls: false
|
514
536
|
end
|
515
537
|
|
516
538
|
class ParanoidWithExplicitTableNameAfterMacro < ActiveRecord::Base
|
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
|
data/test/test_validations.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "test_helper"
|
2
4
|
|
3
5
|
class ValidatesUniquenessTest < ParanoidBaseTest
|
4
6
|
def test_should_include_deleted_by_default
|
5
|
-
ParanoidTime.new(:
|
7
|
+
ParanoidTime.new(name: "paranoid").tap do |record|
|
6
8
|
assert !record.valid?
|
7
9
|
ParanoidTime.first.destroy
|
8
10
|
assert !record.valid?
|
@@ -12,7 +14,7 @@ class ValidatesUniquenessTest < ParanoidBaseTest
|
|
12
14
|
end
|
13
15
|
|
14
16
|
def test_should_validate_without_deleted
|
15
|
-
ParanoidBoolean.new(:
|
17
|
+
ParanoidBoolean.new(name: "paranoid").tap do |record|
|
16
18
|
refute record.valid?
|
17
19
|
ParanoidBoolean.first.destroy
|
18
20
|
assert record.valid?
|
@@ -22,8 +24,8 @@ class ValidatesUniquenessTest < ParanoidBaseTest
|
|
22
24
|
end
|
23
25
|
|
24
26
|
def test_models_with_scoped_validations_can_be_multiply_deleted
|
25
|
-
model_a = ParanoidWithScopedValidation.create(:
|
26
|
-
model_b = ParanoidWithScopedValidation.create(:
|
27
|
+
model_a = ParanoidWithScopedValidation.create(name: "Model A", category: "Category A")
|
28
|
+
model_b = ParanoidWithScopedValidation.create(name: "Model B", category: "Category B")
|
27
29
|
|
28
30
|
ParanoidWithScopedValidation.delete([model_a.id, model_b.id])
|
29
31
|
|
@@ -32,8 +34,8 @@ class ValidatesUniquenessTest < ParanoidBaseTest
|
|
32
34
|
end
|
33
35
|
|
34
36
|
def test_models_with_scoped_validations_can_be_multiply_destroyed
|
35
|
-
model_a = ParanoidWithScopedValidation.create(:
|
36
|
-
model_b = ParanoidWithScopedValidation.create(:
|
37
|
+
model_a = ParanoidWithScopedValidation.create(name: "Model A", category: "Category A")
|
38
|
+
model_b = ParanoidWithScopedValidation.create(name: "Model B", category: "Category B")
|
37
39
|
|
38
40
|
ParanoidWithScopedValidation.destroy([model_a.id, model_b.id])
|
39
41
|
|