soft_destroyable 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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