soft_destroyable 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/MIT-LICENSE +20 -0
- data/README +18 -0
- data/Rakefile +43 -0
- data/VERSION +1 -0
- data/init.rb +1 -0
- data/install.rb +1 -0
- data/lib/soft_destroyable/is_soft_destroyable.rb +30 -0
- data/lib/soft_destroyable/table_definition.rb +15 -0
- data/lib/soft_destroyable.rb +299 -0
- data/spec/support/soft_destroy_spec_helper.rb +111 -0
- data/test/basic_test.rb +33 -0
- data/test/callback_test.rb +52 -0
- data/test/class_method_test.rb +87 -0
- data/test/dependent_delete_all_test.rb +55 -0
- data/test/dependent_delete_test.rb +49 -0
- data/test/dependent_destroy_test.rb +95 -0
- data/test/dependent_nullify_test.rb +96 -0
- data/test/dependent_restrict_test.rb +105 -0
- data/test/non_dependent_test.rb +30 -0
- data/test/test_helper.rb +395 -0
- data/test/through_associations_test.rb +85 -0
- data/uninstall.rb +1 -0
- metadata +129 -0
@@ -0,0 +1,87 @@
|
|
1
|
+
require "#{File.dirname(__FILE__)}/test_helper"
|
2
|
+
|
3
|
+
|
4
|
+
class ClassMethodTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@fred = Parent.create!(:name => "fred")
|
8
|
+
end
|
9
|
+
|
10
|
+
def teardown
|
11
|
+
Parent.delete_all
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_soft_dependencies
|
15
|
+
assert_equal 20, Parent.soft_dependencies.count
|
16
|
+
|
17
|
+
assert Parent.soft_dependencies.include? :soft_children
|
18
|
+
assert Parent.soft_dependencies.include? :children
|
19
|
+
assert Parent.soft_dependencies.include? :soft_one
|
20
|
+
assert Parent.soft_dependencies.include? :one
|
21
|
+
|
22
|
+
assert Parent.soft_dependencies.include? :soft_restrict_children
|
23
|
+
assert Parent.soft_dependencies.include? :restrict_children
|
24
|
+
assert Parent.soft_dependencies.include? :soft_restrict_one
|
25
|
+
assert Parent.soft_dependencies.include? :restrict_one
|
26
|
+
|
27
|
+
assert Parent.soft_dependencies.include? :soft_nullify_children
|
28
|
+
assert Parent.soft_dependencies.include? :nullify_children
|
29
|
+
assert Parent.soft_dependencies.include? :soft_nullify_one
|
30
|
+
assert Parent.soft_dependencies.include? :nullify_one
|
31
|
+
|
32
|
+
assert Parent.soft_dependencies.include? :soft_delete_all_children
|
33
|
+
assert Parent.soft_dependencies.include? :delete_all_children
|
34
|
+
assert Parent.soft_dependencies.include? :soft_delete_one
|
35
|
+
assert Parent.soft_dependencies.include? :delete_one
|
36
|
+
|
37
|
+
assert Parent.soft_dependencies.include? :soft_parent_sports
|
38
|
+
assert Parent.soft_dependencies.include? :parent_sports
|
39
|
+
assert Parent.soft_dependencies.include? :soft_parent_nickname
|
40
|
+
assert Parent.soft_dependencies.include? :parent_nickname
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_restrict_dependencies
|
44
|
+
assert_equal 4, Parent.restrict_dependencies.count
|
45
|
+
|
46
|
+
assert Parent.restrict_dependencies.include? :soft_restrict_children
|
47
|
+
assert Parent.restrict_dependencies.include? :restrict_children
|
48
|
+
assert Parent.restrict_dependencies.include? :soft_restrict_one
|
49
|
+
assert Parent.restrict_dependencies.include? :restrict_one
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_respond_to_destroy!
|
53
|
+
assert @fred.respond_to?(:destroy!)
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_respond_to_deleted_scope
|
57
|
+
assert SoftChild.respond_to?(:deleted)
|
58
|
+
assert_equal Child.respond_to?(:deleted), false
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_respond_to_not_deleted_scope
|
62
|
+
assert SoftChild.respond_to?(:not_deleted)
|
63
|
+
assert_equal Child.respond_to?(:not_deleted), false
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_soft_destroyable?
|
67
|
+
assert SoftChild.soft_destroyable?
|
68
|
+
assert_equal Child.soft_destroyable?, false
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_not_deleted_scope
|
72
|
+
barney = Parent.create!(:name => "barney")
|
73
|
+
@fred.destroy
|
74
|
+
assert_equal Parent.not_deleted.size, 1
|
75
|
+
assert !Parent.not_deleted.include?(@fred)
|
76
|
+
assert Parent.not_deleted.include? barney
|
77
|
+
end
|
78
|
+
|
79
|
+
def test_deleted_scope
|
80
|
+
barney = Parent.create!(:name => "barney")
|
81
|
+
@fred.destroy
|
82
|
+
assert_equal Parent.deleted.size, 1
|
83
|
+
assert Parent.deleted.include?(@fred)
|
84
|
+
assert !Parent.deleted.include?(barney)
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require "#{File.dirname(__FILE__)}/test_helper"
|
2
|
+
|
3
|
+
class DependentDeleteAllTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@fred = Parent.create!(:name => "fred")
|
7
|
+
end
|
8
|
+
|
9
|
+
def teardown
|
10
|
+
Parent.delete_all
|
11
|
+
DeleteAllChild.delete_all
|
12
|
+
SoftDeleteAllChild.delete_all
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_destroy_has_many_delete_all_soft_children
|
16
|
+
@fred.soft_delete_all_children << pebbles = SoftDeleteAllChild.new(:name => "pebbles")
|
17
|
+
@fred.soft_delete_all_children << bambam = SoftDeleteAllChild.new(:name => "bambam")
|
18
|
+
assert_equal 2, @fred.reload.soft_delete_all_children.count
|
19
|
+
@fred.destroy
|
20
|
+
assert_equal true, @fred.deleted?
|
21
|
+
assert_equal 0, SoftDeleteAllChild.where(:name => "pebbles", :parent_id => @fred.id).count
|
22
|
+
assert_equal 0, SoftDeleteAllChild.where(:name => "bambam", :parent_id => @fred.id).count
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_destroy_has_many_delete_all_children
|
26
|
+
@fred.delete_all_children << pebbles = DeleteAllChild.new(:name => "pebbles")
|
27
|
+
@fred.delete_all_children << bambam = DeleteAllChild.new(:name => "bambam")
|
28
|
+
assert_equal 2, @fred.reload.delete_all_children.count
|
29
|
+
@fred.destroy
|
30
|
+
assert_equal true, @fred.deleted?
|
31
|
+
assert_equal 0, SoftDeleteAllChild.where(:name => "pebbles", :parent_id => @fred.id).count
|
32
|
+
assert_equal 0, SoftDeleteAllChild.where(:name => "bambam", :parent_id => @fred.id).count
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_destroy_bang_has_many_delete_all_soft_children
|
36
|
+
@fred.soft_delete_all_children << pebbles = SoftDeleteAllChild.new(:name => "pebbles")
|
37
|
+
@fred.soft_delete_all_children << bambam = SoftDeleteAllChild.new(:name => "bambam")
|
38
|
+
assert_equal 2, @fred.reload.soft_delete_all_children.count
|
39
|
+
@fred.destroy!
|
40
|
+
assert_nil Parent.find_by_id(@fred.id)
|
41
|
+
assert_equal 0, SoftDeleteAllChild.where(:name => "pebbles", :parent_id => @fred.id).count
|
42
|
+
assert_equal 0, SoftDeleteAllChild.where(:name => "bambam", :parent_id => @fred.id).count
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_destroy_bang_has_many_delete_all_children
|
46
|
+
@fred.delete_all_children << pebbles = DeleteAllChild.new(:name => "pebbles")
|
47
|
+
@fred.delete_all_children << bambam = DeleteAllChild.new(:name => "bambam")
|
48
|
+
assert_equal 2, @fred.reload.delete_all_children.count
|
49
|
+
@fred.destroy!
|
50
|
+
assert_nil Parent.find_by_id(@fred.id)
|
51
|
+
assert_equal 0, SoftDeleteAllChild.where(:name => "pebbles", :parent_id => @fred.id).count
|
52
|
+
assert_equal 0, SoftDeleteAllChild.where(:name => "bambam", :parent_id => @fred.id).count
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require "#{File.dirname(__FILE__)}/test_helper"
|
2
|
+
|
3
|
+
class DependentDeleteTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@fred = Parent.create!(:name => "fred")
|
7
|
+
end
|
8
|
+
|
9
|
+
def teardown
|
10
|
+
Parent.delete_all
|
11
|
+
DeleteOne.delete_all
|
12
|
+
SoftDeleteOne.delete_all
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_destroy_has_one_soft_delete_one
|
16
|
+
@fred.soft_delete_one = pebbles = SoftDeleteOne.new(:name => "pebbles")
|
17
|
+
assert_equal pebbles, @fred.reload.soft_delete_one
|
18
|
+
assert_equal @fred, pebbles.parent
|
19
|
+
@fred.destroy
|
20
|
+
assert_equal true, @fred.deleted?
|
21
|
+
assert_equal 0, SoftDeleteOne.where(:name => "pebbles", :parent_id => @fred.id).count
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_destroy_has_one_delete_children
|
25
|
+
@fred.delete_one = pebbles = DeleteOne.new(:name => "pebbles")
|
26
|
+
assert_equal pebbles, @fred.reload.delete_one
|
27
|
+
@fred.destroy
|
28
|
+
assert_equal true, @fred.deleted?
|
29
|
+
assert_equal 0, DeleteOne.where(:name => "pebbles", :parent_id => @fred.id).count
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_destroy_bang_has_one_soft_delete_one
|
33
|
+
@fred.soft_delete_one = pebbles = SoftDeleteOne.new(:name => "pebbles")
|
34
|
+
assert_equal pebbles, @fred.reload.soft_delete_one
|
35
|
+
assert_equal @fred, pebbles.parent
|
36
|
+
@fred.destroy!
|
37
|
+
assert_nil Parent.find_by_id(@fred.id)
|
38
|
+
assert_equal 0, SoftDeleteOne.where(:name => "pebbles", :parent_id => @fred.id).count
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_destroy_bang_has_one_delete_one
|
42
|
+
@fred.delete_one = pebbles = DeleteOne.new(:name => "pebbles")
|
43
|
+
assert_equal pebbles, @fred.reload.delete_one
|
44
|
+
@fred.destroy!
|
45
|
+
assert_nil Parent.find_by_id(@fred.id)
|
46
|
+
assert_equal 0, DeleteOne.where(:name => "pebbles", :parent_id => @fred.id).count
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
require "#{File.dirname(__FILE__)}/test_helper"
|
2
|
+
|
3
|
+
class DependentDestroyTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@fred = Parent.create!(:name => "fred")
|
7
|
+
end
|
8
|
+
|
9
|
+
def teardown
|
10
|
+
Parent.delete_all
|
11
|
+
Child.delete_all
|
12
|
+
SoftChild.delete_all
|
13
|
+
One.delete_all
|
14
|
+
SoftOne.delete_all
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_destroys_has_many_soft_children
|
18
|
+
@fred.soft_children << pebbles = SoftChild.new(:name => "pebbles")
|
19
|
+
@fred.soft_children << bambam = SoftChild.new(:name => "bambam")
|
20
|
+
assert_equal @fred.reload.soft_children.count, 2
|
21
|
+
@fred.destroy
|
22
|
+
assert_equal @fred.deleted?, true
|
23
|
+
assert_equal pebbles.reload.deleted?, true
|
24
|
+
assert_equal bambam.reload.deleted?, true
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_destroys_has_many_children
|
28
|
+
@fred.children << Child.new(:name => "pebbles")
|
29
|
+
@fred.children << Child.new(:name => "bambam")
|
30
|
+
assert_equal @fred.reload.children.count, 2
|
31
|
+
@fred.destroy
|
32
|
+
assert_equal @fred.deleted?, true
|
33
|
+
pebbles = Child.where(:name => "pebbles").first
|
34
|
+
bambam = Child.where(:name => "bambam").first
|
35
|
+
assert_not_nil pebbles
|
36
|
+
assert_not_nil bambam
|
37
|
+
assert_equal pebbles.parent, @fred
|
38
|
+
assert_equal bambam.parent, @fred
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_destroy_bang_has_many_soft_children
|
42
|
+
@fred.soft_children << SoftChild.new(:name => "pebbles")
|
43
|
+
@fred.soft_children << SoftChild.new(:name => "bambam")
|
44
|
+
assert_equal @fred.reload.soft_children.count, 2
|
45
|
+
@fred.destroy!
|
46
|
+
assert_nil Parent.find_by_name("fred")
|
47
|
+
assert_nil SoftChild.find_by_name("pebbles")
|
48
|
+
assert_nil SoftChild.find_by_name("bambam")
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_destroy_bang_has_many_children
|
52
|
+
@fred.children << Child.new(:name => "pebbles")
|
53
|
+
@fred.children << Child.new(:name => "bambam")
|
54
|
+
assert_equal @fred.reload.children.count, 2
|
55
|
+
@fred.destroy!
|
56
|
+
assert_nil Parent.find_by_name("fred")
|
57
|
+
assert_nil Child.find_by_name("pebbles")
|
58
|
+
assert_nil Child.find_by_name("bambam")
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_destroys_has_soft_ones
|
62
|
+
@fred.soft_one = SoftOne.new(:name => "bambam")
|
63
|
+
assert_equal @fred.reload.soft_one, SoftOne.where(:name => "bambam", :parent_id => @fred.id).first
|
64
|
+
@fred.destroy
|
65
|
+
assert_equal @fred.deleted?, true
|
66
|
+
assert_equal SoftOne.where(:name => "bambam").first.deleted?, true
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_destroys_has_ones
|
70
|
+
@fred.one = One.new(:name => "bambam")
|
71
|
+
assert_equal @fred.reload.one, One.where(:name => "bambam", :parent_id => @fred.id).first
|
72
|
+
@fred.destroy
|
73
|
+
assert_equal @fred.deleted?, true
|
74
|
+
the_one = One.where(:name => "bambam").first
|
75
|
+
assert_not_nil the_one
|
76
|
+
assert_equal the_one.parent, @fred
|
77
|
+
end
|
78
|
+
|
79
|
+
def test_destroy_bang_has_soft_ones
|
80
|
+
@fred.soft_one = SoftOne.new(:name => "bambam")
|
81
|
+
assert_equal @fred.reload.soft_one, SoftOne.where(:name => "bambam", :parent_id => @fred.id).first
|
82
|
+
@fred.destroy!
|
83
|
+
assert_nil Parent.find_by_name("fred")
|
84
|
+
assert_nil SoftOne.find_by_name("bambam")
|
85
|
+
end
|
86
|
+
|
87
|
+
def test_destroy_bang_has_ones
|
88
|
+
@fred.one = One.new(:name => "bambam")
|
89
|
+
assert_equal @fred.reload.one, One.where(:name => "bambam", :parent_id => @fred.id).first
|
90
|
+
@fred.destroy!
|
91
|
+
assert_nil Parent.find_by_name("fred")
|
92
|
+
assert_nil One.find_by_name("bambam")
|
93
|
+
end
|
94
|
+
|
95
|
+
end
|
@@ -0,0 +1,96 @@
|
|
1
|
+
require "#{File.dirname(__FILE__)}/test_helper"
|
2
|
+
|
3
|
+
class DependentNullifyTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@fred = Parent.create!(:name => "fred")
|
7
|
+
end
|
8
|
+
|
9
|
+
def teardown
|
10
|
+
Parent.delete_all
|
11
|
+
NullifyChild.delete_all
|
12
|
+
SoftNullifyChild.delete_all
|
13
|
+
NullifyOne.delete_all
|
14
|
+
SoftNullifyOne.delete_all
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_destroy_has_many_nullify_soft_children
|
18
|
+
@fred.soft_nullify_children << pebbles = SoftNullifyChild.new(:name => "pebbles")
|
19
|
+
@fred.soft_nullify_children << bambam = SoftNullifyChild.new(:name => "bambam")
|
20
|
+
assert_equal 2, @fred.reload.soft_nullify_children.count
|
21
|
+
assert_equal @fred, pebbles.parent
|
22
|
+
@fred.destroy
|
23
|
+
assert_equal true, @fred.deleted?
|
24
|
+
assert_nil pebbles.reload.parent
|
25
|
+
assert_nil bambam.reload.parent
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_destroy_has_many_nullify_children
|
29
|
+
@fred.nullify_children << pebbles = NullifyChild.new(:name => "pebbles")
|
30
|
+
@fred.nullify_children << bambam = NullifyChild.new(:name => "bambam")
|
31
|
+
assert_equal 2, @fred.reload.nullify_children.count
|
32
|
+
assert_equal @fred, pebbles.parent
|
33
|
+
@fred.destroy
|
34
|
+
assert_equal true, @fred.deleted?
|
35
|
+
assert_nil pebbles.reload.parent
|
36
|
+
assert_nil bambam.reload.parent
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_destroys_has_soft_nullify_ones
|
40
|
+
@fred.soft_nullify_one = bambam = SoftNullifyOne.new(:name => "bambam")
|
41
|
+
assert_equal bambam, @fred.reload.soft_nullify_one
|
42
|
+
assert_equal bambam.parent, @fred
|
43
|
+
@fred.destroy
|
44
|
+
assert_equal true, @fred.deleted?
|
45
|
+
assert_nil bambam.reload.parent
|
46
|
+
assert_nil SoftNullifyOne.where(:id => bambam.id).first.parent_id
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_destroy_has_nullify_ones
|
50
|
+
@fred.nullify_one = bambam = NullifyOne.new(:name => "bambam")
|
51
|
+
assert_equal bambam , @fred.reload.nullify_one
|
52
|
+
assert_equal bambam.parent, @fred
|
53
|
+
@fred.destroy
|
54
|
+
assert_equal true, @fred.deleted?
|
55
|
+
assert_nil NullifyOne.where(:id => bambam.id).first.parent_id
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_destroy_bang_has_many_nullify_soft_children
|
59
|
+
@fred.soft_nullify_children << pebbles = SoftNullifyChild.new(:name => "pebbles")
|
60
|
+
@fred.soft_nullify_children << bambam = SoftNullifyChild.new(:name => "bambam")
|
61
|
+
assert_equal 2, @fred.reload.soft_nullify_children.count
|
62
|
+
assert_equal @fred, pebbles.parent
|
63
|
+
@fred.destroy!
|
64
|
+
assert_equal 1, SoftNullifyChild.where(:name => "pebbles", :parent_id => nil).count
|
65
|
+
assert_equal 1, SoftNullifyChild.where(:name => "bambam", :parent_id => nil).count
|
66
|
+
end
|
67
|
+
|
68
|
+
def test_destroy_bang_has_many_nullify_children
|
69
|
+
@fred.nullify_children << pebbles = NullifyChild.new(:name => "pebbles")
|
70
|
+
@fred.nullify_children << bambam = NullifyChild.new(:name => "bambam")
|
71
|
+
assert_equal 2, @fred.reload.nullify_children.count
|
72
|
+
assert_equal @fred, pebbles.parent
|
73
|
+
@fred.destroy!
|
74
|
+
assert_nil pebbles.reload.parent
|
75
|
+
assert_nil bambam.reload.parent
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_destroy_bang_has_soft_nullify_ones
|
79
|
+
@fred.soft_nullify_one = bambam = SoftNullifyOne.new(:name => "bambam")
|
80
|
+
assert_equal bambam, @fred.reload.soft_nullify_one
|
81
|
+
assert_equal bambam.parent, @fred
|
82
|
+
@fred.destroy!
|
83
|
+
assert_nil Parent.find_by_name("fred")
|
84
|
+
assert_nil bambam.reload.parent
|
85
|
+
end
|
86
|
+
|
87
|
+
def test_destroy_bang_has_nullify_ones
|
88
|
+
@fred.nullify_one = bambam = NullifyOne.new(:name => "bambam")
|
89
|
+
assert_equal bambam, @fred.reload.nullify_one
|
90
|
+
assert_equal bambam.parent, @fred
|
91
|
+
@fred.destroy!
|
92
|
+
assert_nil Parent.find_by_name("fred")
|
93
|
+
assert_nil bambam.reload.parent
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
@@ -0,0 +1,105 @@
|
|
1
|
+
require "#{File.dirname(__FILE__)}/test_helper"
|
2
|
+
|
3
|
+
class DependentRestrictTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@fred = Parent.create!(:name => "fred")
|
7
|
+
end
|
8
|
+
|
9
|
+
def teardown
|
10
|
+
Parent.delete_all
|
11
|
+
RestrictChild.delete_all
|
12
|
+
SoftRestrictChild.delete_all
|
13
|
+
RestrictOne.delete_all
|
14
|
+
SoftRestrictOne.delete_all
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_destroy_has_many_restrict_soft_children
|
18
|
+
@fred.soft_restrict_children << pebbles = SoftRestrictChild.new(:name => "pebbles")
|
19
|
+
@fred.soft_restrict_children << bambam = SoftRestrictChild.new(:name => "bambam")
|
20
|
+
assert_equal 2, @fred.reload.soft_restrict_children.count
|
21
|
+
assert_raise ActiveRecord::DeleteRestrictionError do
|
22
|
+
@fred.destroy
|
23
|
+
end
|
24
|
+
assert_equal false, @fred.deleted?
|
25
|
+
assert_equal false, pebbles.reload.deleted?
|
26
|
+
assert_equal false, bambam.reload.deleted?
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_destroy_has_many_restrict_children
|
30
|
+
@fred.restrict_children << pebbles = RestrictChild.new(:name => "pebbles")
|
31
|
+
@fred.restrict_children << bambam = RestrictChild.new(:name => "bambam")
|
32
|
+
assert_equal 2, @fred.reload.restrict_children.count
|
33
|
+
assert_raise ActiveRecord::DeleteRestrictionError do
|
34
|
+
@fred.destroy
|
35
|
+
end
|
36
|
+
assert_equal false, @fred.deleted?
|
37
|
+
assert_not_nil RestrictChild.find_by_name("pebbles")
|
38
|
+
assert_not_nil RestrictChild.find_by_name("bambam")
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_destroy_bang_has_many_restrict_soft_children
|
42
|
+
@fred.soft_restrict_children << pebbles = SoftRestrictChild.new(:name => "pebbles")
|
43
|
+
@fred.soft_restrict_children << bambam = SoftRestrictChild.new(:name => "bambam")
|
44
|
+
assert_equal 2, @fred.reload.soft_restrict_children.count
|
45
|
+
assert_raise ActiveRecord::DeleteRestrictionError do
|
46
|
+
@fred.destroy!
|
47
|
+
end
|
48
|
+
assert_equal false, @fred.deleted?
|
49
|
+
assert_equal false, pebbles.reload.deleted?
|
50
|
+
assert_equal false, bambam.reload.deleted?
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_destroy_bang_has_many_restrict_children
|
54
|
+
@fred.restrict_children << pebbles = RestrictChild.new(:name => "pebbles")
|
55
|
+
@fred.restrict_children << bambam = RestrictChild.new(:name => "bambam")
|
56
|
+
assert_equal 2, @fred.reload.restrict_children.count
|
57
|
+
assert_raise ActiveRecord::DeleteRestrictionError do
|
58
|
+
@fred.destroy!
|
59
|
+
end
|
60
|
+
assert_equal false, @fred.deleted?
|
61
|
+
assert_not_nil RestrictChild.find_by_name("pebbles")
|
62
|
+
assert_not_nil RestrictChild.find_by_name("bambam")
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_destroys_has_soft_restrict_ones
|
66
|
+
@fred.soft_restrict_one = SoftRestrictOne.new(:name => "bambam")
|
67
|
+
assert_equal @fred.reload.soft_restrict_one, SoftRestrictOne.where(:name => "bambam", :parent_id => @fred.id).first
|
68
|
+
assert_raise ActiveRecord::DeleteRestrictionError do
|
69
|
+
@fred.destroy
|
70
|
+
end
|
71
|
+
assert_equal false, @fred.deleted?
|
72
|
+
assert_not_nil SoftRestrictOne.find_by_name("bambam")
|
73
|
+
end
|
74
|
+
|
75
|
+
def test_destroys_has_restrict_ones
|
76
|
+
@fred.restrict_one = RestrictOne.new(:name => "bambam")
|
77
|
+
assert_equal @fred.reload.restrict_one, RestrictOne.where(:name => "bambam", :parent_id => @fred.id).first
|
78
|
+
assert_raise ActiveRecord::DeleteRestrictionError do
|
79
|
+
@fred.destroy
|
80
|
+
end
|
81
|
+
assert_equal false, @fred.deleted?
|
82
|
+
assert_not_nil RestrictOne.find_by_name("bambam")
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_destroy_bang_has_soft_restrict_ones
|
86
|
+
@fred.soft_restrict_one = SoftRestrictOne.new(:name => "bambam")
|
87
|
+
assert_equal @fred.reload.soft_restrict_one, SoftRestrictOne.where(:name => "bambam", :parent_id => @fred.id).first
|
88
|
+
assert_raise ActiveRecord::DeleteRestrictionError do
|
89
|
+
@fred.destroy!
|
90
|
+
end
|
91
|
+
assert_equal false, @fred.deleted?
|
92
|
+
assert_not_nil SoftRestrictOne.find_by_name("bambam")
|
93
|
+
end
|
94
|
+
|
95
|
+
def test_destroy_bang_has_restrict_ones
|
96
|
+
@fred.restrict_one = RestrictOne.new(:name => "bambam")
|
97
|
+
assert_equal @fred.reload.restrict_one, RestrictOne.where(:name => "bambam", :parent_id => @fred.id).first
|
98
|
+
assert_raise ActiveRecord::DeleteRestrictionError do
|
99
|
+
@fred.destroy!
|
100
|
+
end
|
101
|
+
assert_equal false, @fred.deleted?
|
102
|
+
assert_not_nil RestrictOne.find_by_name("bambam")
|
103
|
+
end
|
104
|
+
|
105
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require "#{File.dirname(__FILE__)}/test_helper"
|
2
|
+
|
3
|
+
class NonDependentTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@fred = Parent.create!(:name => "fred")
|
7
|
+
end
|
8
|
+
|
9
|
+
def teardown
|
10
|
+
NonDependentChild.delete_all
|
11
|
+
Parent.delete_all
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_destroy_does_not_destroy_non_dependent_children
|
15
|
+
@fred.non_dependent_children << pebbles = NonDependentChild.new(:name => "pebbles")
|
16
|
+
assert_equal 1, @fred.reload.non_dependent_children.count
|
17
|
+
@fred.destroy
|
18
|
+
assert_equal @fred.deleted?, true
|
19
|
+
assert_not_nil pebbles.reload
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_destroy_bang_does_not_destroy_non_dependent_children
|
23
|
+
@fred.non_dependent_children << pebbles = NonDependentChild.new(:name => "pebbles")
|
24
|
+
assert_equal 1, @fred.reload.non_dependent_children.count
|
25
|
+
@fred.destroy!
|
26
|
+
assert_nil Parent.where(:name => "fred").first
|
27
|
+
assert_not_nil pebbles.reload
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|