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