##// END OF EJS Templates
adjust tests to awesome_nested_set new node lft and rgt value behavior change...
Toshi MARUYAMA -
r12418:17a5f26e5027
parent child
Show More
@@ -24,6 +24,8 require Rails.root.join('test', 'mocks', 'open_id_authentication_mock.rb').to_s
24 require File.expand_path(File.dirname(__FILE__) + '/object_helpers')
24 require File.expand_path(File.dirname(__FILE__) + '/object_helpers')
25 include ObjectHelpers
25 include ObjectHelpers
26
26
27 require 'awesome_nested_set/version'
28
27 class ActiveSupport::TestCase
29 class ActiveSupport::TestCase
28 include ActionDispatch::TestProcess
30 include ActionDispatch::TestProcess
29
31
@@ -197,6 +199,16 class ActiveSupport::TestCase
197 def mail_body(mail)
199 def mail_body(mail)
198 mail.parts.first.body.encoded
200 mail.parts.first.body.encoded
199 end
201 end
202
203 # awesome_nested_set new node lft and rgt value changed this refactor revision.
204 # https://github.com/collectiveidea/awesome_nested_set/commit/199fca9bb938e40200cd90714dc69247ef017c61
205 # The reason of behavior change is "self.class.base_class.unscoped" added this line.
206 # https://github.com/collectiveidea/awesome_nested_set/commit/199fca9bb9#diff-f61b59a5e6319024e211b0ffdd0e4ef1R273
207 # It seems correct behavior because of this line comment.
208 # https://github.com/collectiveidea/awesome_nested_set/blame/199fca9bb9/lib/awesome_nested_set/model.rb#L278
209 def new_issue_lft
210 ::AwesomeNestedSet::VERSION > "2.1.6" ? Issue.maximum(:rgt) + 1 : 1
211 end
200 end
212 end
201
213
202 module Redmine
214 module Redmine
@@ -30,23 +30,24 class IssueNestedSetTest < ActiveSupport::TestCase
30 end
30 end
31
31
32 def test_create_root_issue
32 def test_create_root_issue
33 lft1 = new_issue_lft
33 issue1 = Issue.generate!
34 issue1 = Issue.generate!
35 lft2 = new_issue_lft
34 issue2 = Issue.generate!
36 issue2 = Issue.generate!
35 issue1.reload
37 issue1.reload
36 issue2.reload
38 issue2.reload
37
39 assert_equal [issue1.id, nil, lft1, lft1 + 1], [issue1.root_id, issue1.parent_id, issue1.lft, issue1.rgt]
38 assert_equal [issue1.id, nil, 1, 2], [issue1.root_id, issue1.parent_id, issue1.lft, issue1.rgt]
40 assert_equal [issue2.id, nil, lft2, lft2 + 1], [issue2.root_id, issue2.parent_id, issue2.lft, issue2.rgt]
39 assert_equal [issue2.id, nil, 1, 2], [issue2.root_id, issue2.parent_id, issue2.lft, issue2.rgt]
40 end
41 end
41
42
42 def test_create_child_issue
43 def test_create_child_issue
44 lft = new_issue_lft
43 parent = Issue.generate!
45 parent = Issue.generate!
44 child = Issue.generate!(:parent_issue_id => parent.id)
46 child = Issue.generate!(:parent_issue_id => parent.id)
45 parent.reload
47 parent.reload
46 child.reload
48 child.reload
47
49 assert_equal [parent.id, nil, lft, lft + 3], [parent.root_id, parent.parent_id, parent.lft, parent.rgt]
48 assert_equal [parent.id, nil, 1, 4], [parent.root_id, parent.parent_id, parent.lft, parent.rgt]
50 assert_equal [parent.id, parent.id, lft + 1, lft + 2], [child.root_id, child.parent_id, child.lft, child.rgt]
49 assert_equal [parent.id, parent.id, 2, 3], [child.root_id, child.parent_id, child.lft, child.rgt]
50 end
51 end
51
52
52 def test_creating_a_child_in_a_subproject_should_validate
53 def test_creating_a_child_in_a_subproject_should_validate
@@ -66,95 +67,91 class IssueNestedSetTest < ActiveSupport::TestCase
66 end
67 end
67
68
68 def test_move_a_root_to_child
69 def test_move_a_root_to_child
70 lft = new_issue_lft
69 parent1 = Issue.generate!
71 parent1 = Issue.generate!
70 parent2 = Issue.generate!
72 parent2 = Issue.generate!
71 child = Issue.generate!(:parent_issue_id => parent1.id)
73 child = Issue.generate!(:parent_issue_id => parent1.id)
72
73 parent2.parent_issue_id = parent1.id
74 parent2.parent_issue_id = parent1.id
74 parent2.save!
75 parent2.save!
75 child.reload
76 child.reload
76 parent1.reload
77 parent1.reload
77 parent2.reload
78 parent2.reload
78
79 assert_equal [parent1.id, lft, lft + 5], [parent1.root_id, parent1.lft, parent1.rgt]
79 assert_equal [parent1.id, 1, 6], [parent1.root_id, parent1.lft, parent1.rgt]
80 assert_equal [parent1.id, lft + 3, lft + 4], [parent2.root_id, parent2.lft, parent2.rgt]
80 assert_equal [parent1.id, 4, 5], [parent2.root_id, parent2.lft, parent2.rgt]
81 assert_equal [parent1.id, lft + 1, lft + 2], [child.root_id, child.lft, child.rgt]
81 assert_equal [parent1.id, 2, 3], [child.root_id, child.lft, child.rgt]
82 end
82 end
83
83
84 def test_move_a_child_to_root
84 def test_move_a_child_to_root
85 lft1 = new_issue_lft
85 parent1 = Issue.generate!
86 parent1 = Issue.generate!
87 lft2 = new_issue_lft
86 parent2 = Issue.generate!
88 parent2 = Issue.generate!
87 child = Issue.generate!(:parent_issue_id => parent1.id)
89 child = Issue.generate!(:parent_issue_id => parent1.id)
88
89 child.parent_issue_id = nil
90 child.parent_issue_id = nil
90 child.save!
91 child.save!
91 child.reload
92 child.reload
92 parent1.reload
93 parent1.reload
93 parent2.reload
94 parent2.reload
94
95 assert_equal [parent1.id, lft1, lft1 + 1], [parent1.root_id, parent1.lft, parent1.rgt]
95 assert_equal [parent1.id, 1, 2], [parent1.root_id, parent1.lft, parent1.rgt]
96 assert_equal [parent2.id, lft2, lft2 + 1], [parent2.root_id, parent2.lft, parent2.rgt]
96 assert_equal [parent2.id, 1, 2], [parent2.root_id, parent2.lft, parent2.rgt]
97 assert_equal [child.id, 1, 2], [child.root_id, child.lft, child.rgt]
97 assert_equal [child.id, 1, 2], [child.root_id, child.lft, child.rgt]
98 end
98 end
99
99
100 def test_move_a_child_to_another_issue
100 def test_move_a_child_to_another_issue
101 lft1 = new_issue_lft
101 parent1 = Issue.generate!
102 parent1 = Issue.generate!
103 lft2 = new_issue_lft
102 parent2 = Issue.generate!
104 parent2 = Issue.generate!
103 child = Issue.generate!(:parent_issue_id => parent1.id)
105 child = Issue.generate!(:parent_issue_id => parent1.id)
104
105 child.parent_issue_id = parent2.id
106 child.parent_issue_id = parent2.id
106 child.save!
107 child.save!
107 child.reload
108 child.reload
108 parent1.reload
109 parent1.reload
109 parent2.reload
110 parent2.reload
110
111 assert_equal [parent1.id, lft1, lft1 + 1], [parent1.root_id, parent1.lft, parent1.rgt]
111 assert_equal [parent1.id, 1, 2], [parent1.root_id, parent1.lft, parent1.rgt]
112 assert_equal [parent2.id, lft2, lft2 + 3], [parent2.root_id, parent2.lft, parent2.rgt]
112 assert_equal [parent2.id, 1, 4], [parent2.root_id, parent2.lft, parent2.rgt]
113 assert_equal [parent2.id, lft2 + 1, lft2 + 2], [child.root_id, child.lft, child.rgt]
113 assert_equal [parent2.id, 2, 3], [child.root_id, child.lft, child.rgt]
114 end
114 end
115
115
116 def test_move_a_child_with_descendants_to_another_issue
116 def test_move_a_child_with_descendants_to_another_issue
117 lft1 = new_issue_lft
117 parent1 = Issue.generate!
118 parent1 = Issue.generate!
119 lft2 = new_issue_lft
118 parent2 = Issue.generate!
120 parent2 = Issue.generate!
119 child = Issue.generate!(:parent_issue_id => parent1.id)
121 child = Issue.generate!(:parent_issue_id => parent1.id)
120 grandchild = Issue.generate!(:parent_issue_id => child.id)
122 grandchild = Issue.generate!(:parent_issue_id => child.id)
121
122 parent1.reload
123 parent1.reload
123 parent2.reload
124 parent2.reload
124 child.reload
125 child.reload
125 grandchild.reload
126 grandchild.reload
126
127 assert_equal [parent1.id, lft1, lft1 + 5], [parent1.root_id, parent1.lft, parent1.rgt]
127 assert_equal [parent1.id, 1, 6], [parent1.root_id, parent1.lft, parent1.rgt]
128 assert_equal [parent2.id, lft2, lft2 + 1], [parent2.root_id, parent2.lft, parent2.rgt]
128 assert_equal [parent2.id, 1, 2], [parent2.root_id, parent2.lft, parent2.rgt]
129 assert_equal [parent1.id, lft1 + 1, lft1 + 4], [child.root_id, child.lft, child.rgt]
129 assert_equal [parent1.id, 2, 5], [child.root_id, child.lft, child.rgt]
130 assert_equal [parent1.id, lft1 + 2, lft1 + 3], [grandchild.root_id, grandchild.lft, grandchild.rgt]
130 assert_equal [parent1.id, 3, 4], [grandchild.root_id, grandchild.lft, grandchild.rgt]
131
132 child.reload.parent_issue_id = parent2.id
131 child.reload.parent_issue_id = parent2.id
133 child.save!
132 child.save!
134 child.reload
133 child.reload
135 grandchild.reload
134 grandchild.reload
136 parent1.reload
135 parent1.reload
137 parent2.reload
136 parent2.reload
138
137 assert_equal [parent1.id, lft1, lft1 + 1], [parent1.root_id, parent1.lft, parent1.rgt]
139 assert_equal [parent1.id, 1, 2], [parent1.root_id, parent1.lft, parent1.rgt]
138 assert_equal [parent2.id, lft2, lft2 + 5], [parent2.root_id, parent2.lft, parent2.rgt]
140 assert_equal [parent2.id, 1, 6], [parent2.root_id, parent2.lft, parent2.rgt]
139 assert_equal [parent2.id, lft2 + 1, lft2 + 4], [child.root_id, child.lft, child.rgt]
141 assert_equal [parent2.id, 2, 5], [child.root_id, child.lft, child.rgt]
140 assert_equal [parent2.id, lft2 + 2, lft2 + 3], [grandchild.root_id, grandchild.lft, grandchild.rgt]
142 assert_equal [parent2.id, 3, 4], [grandchild.root_id, grandchild.lft, grandchild.rgt]
143 end
141 end
144
142
145 def test_move_a_child_with_descendants_to_another_project
143 def test_move_a_child_with_descendants_to_another_project
144 lft1 = new_issue_lft
146 parent1 = Issue.generate!
145 parent1 = Issue.generate!
147 child = Issue.generate!(:parent_issue_id => parent1.id)
146 child = Issue.generate!(:parent_issue_id => parent1.id)
148 grandchild = Issue.generate!(:parent_issue_id => child.id)
147 grandchild = Issue.generate!(:parent_issue_id => child.id)
149
150 child.reload
148 child.reload
151 child.project = Project.find(2)
149 child.project = Project.find(2)
152 assert child.save
150 assert child.save
153 child.reload
151 child.reload
154 grandchild.reload
152 grandchild.reload
155 parent1.reload
153 parent1.reload
156
154 assert_equal [1, parent1.id, lft1, lft1 + 1], [parent1.project_id, parent1.root_id, parent1.lft, parent1.rgt]
157 assert_equal [1, parent1.id, 1, 2], [parent1.project_id, parent1.root_id, parent1.lft, parent1.rgt]
158 assert_equal [2, child.id, 1, 4], [child.project_id, child.root_id, child.lft, child.rgt]
155 assert_equal [2, child.id, 1, 4], [child.project_id, child.root_id, child.lft, child.rgt]
159 assert_equal [2, child.id, 2, 3], [grandchild.project_id, grandchild.root_id, grandchild.lft, grandchild.rgt]
156 assert_equal [2, child.id, 2, 3], [grandchild.project_id, grandchild.root_id, grandchild.lft, grandchild.rgt]
160 end
157 end
@@ -207,15 +204,14 class IssueNestedSetTest < ActiveSupport::TestCase
207 end
204 end
208
205
209 def test_destroy_should_destroy_children
206 def test_destroy_should_destroy_children
207 lft1 = new_issue_lft
210 issue1 = Issue.generate!
208 issue1 = Issue.generate!
211 issue2 = Issue.generate!
209 issue2 = Issue.generate!
212 issue3 = Issue.generate!(:parent_issue_id => issue2.id)
210 issue3 = Issue.generate!(:parent_issue_id => issue2.id)
213 issue4 = Issue.generate!(:parent_issue_id => issue1.id)
211 issue4 = Issue.generate!(:parent_issue_id => issue1.id)
214
215 issue3.init_journal(User.find(2))
212 issue3.init_journal(User.find(2))
216 issue3.subject = 'child with journal'
213 issue3.subject = 'child with journal'
217 issue3.save!
214 issue3.save!
218
219 assert_difference 'Issue.count', -2 do
215 assert_difference 'Issue.count', -2 do
220 assert_difference 'Journal.count', -1 do
216 assert_difference 'Journal.count', -1 do
221 assert_difference 'JournalDetail.count', -1 do
217 assert_difference 'JournalDetail.count', -1 do
@@ -223,27 +219,24 class IssueNestedSetTest < ActiveSupport::TestCase
223 end
219 end
224 end
220 end
225 end
221 end
226
227 issue1.reload
222 issue1.reload
228 issue4.reload
223 issue4.reload
229 assert !Issue.exists?(issue2.id)
224 assert !Issue.exists?(issue2.id)
230 assert !Issue.exists?(issue3.id)
225 assert !Issue.exists?(issue3.id)
231 assert_equal [issue1.id, 1, 4], [issue1.root_id, issue1.lft, issue1.rgt]
226 assert_equal [issue1.id, lft1, lft1 + 3], [issue1.root_id, issue1.lft, issue1.rgt]
232 assert_equal [issue1.id, 2, 3], [issue4.root_id, issue4.lft, issue4.rgt]
227 assert_equal [issue1.id, lft1 + 1, lft1 + 2], [issue4.root_id, issue4.lft, issue4.rgt]
233 end
228 end
234
229
235 def test_destroy_child_should_update_parent
230 def test_destroy_child_should_update_parent
231 lft1 = new_issue_lft
236 issue = Issue.generate!
232 issue = Issue.generate!
237 child1 = Issue.generate!(:parent_issue_id => issue.id)
233 child1 = Issue.generate!(:parent_issue_id => issue.id)
238 child2 = Issue.generate!(:parent_issue_id => issue.id)
234 child2 = Issue.generate!(:parent_issue_id => issue.id)
239
240 issue.reload
235 issue.reload
241 assert_equal [issue.id, 1, 6], [issue.root_id, issue.lft, issue.rgt]
236 assert_equal [issue.id, lft1, lft1 + 5], [issue.root_id, issue.lft, issue.rgt]
242
243 child2.reload.destroy
237 child2.reload.destroy
244
245 issue.reload
238 issue.reload
246 assert_equal [issue.id, 1, 4], [issue.root_id, issue.lft, issue.rgt]
239 assert_equal [issue.id, lft1, lft1 + 3], [issue.root_id, issue.lft, issue.rgt]
247 end
240 end
248
241
249 def test_destroy_parent_issue_updated_during_children_destroy
242 def test_destroy_parent_issue_updated_during_children_destroy
@@ -277,16 +270,16 class IssueNestedSetTest < ActiveSupport::TestCase
277 end
270 end
278
271
279 def test_destroy_issue_with_grand_child
272 def test_destroy_issue_with_grand_child
273 lft1 = new_issue_lft
280 parent = Issue.generate!
274 parent = Issue.generate!
281 issue = Issue.generate!(:parent_issue_id => parent.id)
275 issue = Issue.generate!(:parent_issue_id => parent.id)
282 child = Issue.generate!(:parent_issue_id => issue.id)
276 child = Issue.generate!(:parent_issue_id => issue.id)
283 grandchild1 = Issue.generate!(:parent_issue_id => child.id)
277 grandchild1 = Issue.generate!(:parent_issue_id => child.id)
284 grandchild2 = Issue.generate!(:parent_issue_id => child.id)
278 grandchild2 = Issue.generate!(:parent_issue_id => child.id)
285
286 assert_difference 'Issue.count', -4 do
279 assert_difference 'Issue.count', -4 do
287 Issue.find(issue.id).destroy
280 Issue.find(issue.id).destroy
288 parent.reload
281 parent.reload
289 assert_equal [1, 2], [parent.lft, parent.rgt]
282 assert_equal [lft1, lft1 + 1], [parent.lft, parent.rgt]
290 end
283 end
291 end
284 end
292
285
@@ -30,14 +30,13 class IssueTransactionTest < ActiveSupport::TestCase
30 self.use_transactional_fixtures = false
30 self.use_transactional_fixtures = false
31
31
32 def test_invalid_move_to_another_project
32 def test_invalid_move_to_another_project
33 lft1 = new_issue_lft
33 parent1 = Issue.generate!
34 parent1 = Issue.generate!
34 child = Issue.generate!(:parent_issue_id => parent1.id)
35 child = Issue.generate!(:parent_issue_id => parent1.id)
35 grandchild = Issue.generate!(:parent_issue_id => child.id, :tracker_id => 2)
36 grandchild = Issue.generate!(:parent_issue_id => child.id, :tracker_id => 2)
36 Project.find(2).tracker_ids = [1]
37 Project.find(2).tracker_ids = [1]
37
38 parent1.reload
38 parent1.reload
39 assert_equal [1, parent1.id, 1, 6], [parent1.project_id, parent1.root_id, parent1.lft, parent1.rgt]
39 assert_equal [1, parent1.id, lft1, lft1 + 5], [parent1.project_id, parent1.root_id, parent1.lft, parent1.rgt]
40
41 # child can not be moved to Project 2 because its child is on a disabled tracker
40 # child can not be moved to Project 2 because its child is on a disabled tracker
42 child = Issue.find(child.id)
41 child = Issue.find(child.id)
43 child.project = Project.find(2)
42 child.project = Project.find(2)
@@ -45,10 +44,9 class IssueTransactionTest < ActiveSupport::TestCase
45 child.reload
44 child.reload
46 grandchild.reload
45 grandchild.reload
47 parent1.reload
46 parent1.reload
48
49 # no change
47 # no change
50 assert_equal [1, parent1.id, 1, 6], [parent1.project_id, parent1.root_id, parent1.lft, parent1.rgt]
48 assert_equal [1, parent1.id, lft1, lft1 + 5], [parent1.project_id, parent1.root_id, parent1.lft, parent1.rgt]
51 assert_equal [1, parent1.id, 2, 5], [child.project_id, child.root_id, child.lft, child.rgt]
49 assert_equal [1, parent1.id, lft1 + 1, lft1 + 4], [child.project_id, child.root_id, child.lft, child.rgt]
52 assert_equal [1, parent1.id, 3, 4], [grandchild.project_id, grandchild.root_id, grandchild.lft, grandchild.rgt]
50 assert_equal [1, parent1.id, lft1 + 2, lft1 + 3], [grandchild.project_id, grandchild.root_id, grandchild.lft, grandchild.rgt]
53 end
51 end
54 end
52 end
@@ -41,6 +41,7 class MailHandlerTest < ActiveSupport::TestCase
41
41
42 def test_add_issue
42 def test_add_issue
43 ActionMailer::Base.deliveries.clear
43 ActionMailer::Base.deliveries.clear
44 lft1 = new_issue_lft
44 # This email contains: 'Project: onlinestore'
45 # This email contains: 'Project: onlinestore'
45 issue = submit_email('ticket_on_given_project.eml')
46 issue = submit_email('ticket_on_given_project.eml')
46 assert issue.is_a?(Issue)
47 assert issue.is_a?(Issue)
@@ -58,7 +59,7 class MailHandlerTest < ActiveSupport::TestCase
58 assert_equal Version.find_by_name('Alpha'), issue.fixed_version
59 assert_equal Version.find_by_name('Alpha'), issue.fixed_version
59 assert_equal 2.5, issue.estimated_hours
60 assert_equal 2.5, issue.estimated_hours
60 assert_equal 30, issue.done_ratio
61 assert_equal 30, issue.done_ratio
61 assert_equal [issue.id, 1, 2], [issue.root_id, issue.lft, issue.rgt]
62 assert_equal [issue.id, lft1, lft1 + 1], [issue.root_id, issue.lft, issue.rgt]
62 # keywords should be removed from the email body
63 # keywords should be removed from the email body
63 assert !issue.description.match(/^Project:/i)
64 assert !issue.description.match(/^Project:/i)
64 assert !issue.description.match(/^Status:/i)
65 assert !issue.description.match(/^Status:/i)
@@ -264,6 +265,7 class MailHandlerTest < ActiveSupport::TestCase
264 end
265 end
265
266
266 def test_add_issue_by_anonymous_user_on_private_project_without_permission_check
267 def test_add_issue_by_anonymous_user_on_private_project_without_permission_check
268 lft1 = new_issue_lft
267 assert_no_difference 'User.count' do
269 assert_no_difference 'User.count' do
268 assert_difference 'Issue.count' do
270 assert_difference 'Issue.count' do
269 issue = submit_email(
271 issue = submit_email(
@@ -275,7 +277,7 class MailHandlerTest < ActiveSupport::TestCase
275 assert issue.is_a?(Issue)
277 assert issue.is_a?(Issue)
276 assert issue.author.anonymous?
278 assert issue.author.anonymous?
277 assert !issue.project.is_public?
279 assert !issue.project.is_public?
278 assert_equal [issue.id, 1, 2], [issue.root_id, issue.lft, issue.rgt]
280 assert_equal [issue.id, lft1, lft1 + 1], [issue.root_id, issue.lft, issue.rgt]
279 end
281 end
280 end
282 end
281 end
283 end
General Comments 0
You need to be logged in to leave comments. Login now