soft_destroyable 0.1.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/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
|