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.
@@ -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