@@ -0,0 +1,59 | |||||
|
1 | # Redmine - project management software | |||
|
2 | # Copyright (C) 2006-2012 Jean-Philippe Lang | |||
|
3 | # | |||
|
4 | # This program is free software; you can redistribute it and/or | |||
|
5 | # modify it under the terms of the GNU General Public License | |||
|
6 | # as published by the Free Software Foundation; either version 2 | |||
|
7 | # of the License, or (at your option) any later version. | |||
|
8 | # | |||
|
9 | # This program is distributed in the hope that it will be useful, | |||
|
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
|
12 | # GNU General Public License for more details. | |||
|
13 | # | |||
|
14 | # You should have received a copy of the GNU General Public License | |||
|
15 | # along with this program; if not, write to the Free Software | |||
|
16 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
|
17 | ||||
|
18 | require File.expand_path('../../test_helper', __FILE__) | |||
|
19 | ||||
|
20 | class IssueTransactionTest < ActiveSupport::TestCase | |||
|
21 | fixtures :projects, :users, :members, :member_roles, :roles, | |||
|
22 | :trackers, :projects_trackers, | |||
|
23 | :versions, | |||
|
24 | :issue_statuses, :issue_categories, :issue_relations, :workflows, | |||
|
25 | :enumerations, | |||
|
26 | :issues, | |||
|
27 | :custom_fields, :custom_fields_projects, :custom_fields_trackers, :custom_values, | |||
|
28 | :time_entries | |||
|
29 | ||||
|
30 | self.use_transactional_fixtures = false | |||
|
31 | ||||
|
32 | def test_invalid_move_to_another_project | |||
|
33 | parent1 = create_issue! | |||
|
34 | child = create_issue!(:parent_issue_id => parent1.id) | |||
|
35 | grandchild = create_issue!(:parent_issue_id => child.id, :tracker_id => 2) | |||
|
36 | Project.find(2).tracker_ids = [1] | |||
|
37 | ||||
|
38 | parent1.reload | |||
|
39 | assert_equal [1, parent1.id, 1, 6], [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 | |||
|
42 | child = Issue.find(child.id) | |||
|
43 | child.project = Project.find(2) | |||
|
44 | assert !child.save | |||
|
45 | child.reload | |||
|
46 | grandchild.reload | |||
|
47 | parent1.reload | |||
|
48 | ||||
|
49 | # 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] | |||
|
53 | end | |||
|
54 | ||||
|
55 | # Helper that creates an issue with default attributes | |||
|
56 | def create_issue!(attributes={}) | |||
|
57 | Issue.create!({:project_id => 1, :tracker_id => 1, :author_id => 1, :subject => 'test'}.merge(attributes)) | |||
|
58 | end | |||
|
59 | end |
@@ -27,8 +27,6 class IssueNestedSetTest < ActiveSupport::TestCase | |||||
27 | :custom_fields, :custom_fields_projects, :custom_fields_trackers, :custom_values, |
|
27 | :custom_fields, :custom_fields_projects, :custom_fields_trackers, :custom_values, | |
28 | :time_entries |
|
28 | :time_entries | |
29 |
|
29 | |||
30 | self.use_transactional_fixtures = false |
|
|||
31 |
|
||||
32 | def test_create_root_issue |
|
30 | def test_create_root_issue | |
33 | issue1 = create_issue! |
|
31 | issue1 = create_issue! | |
34 | issue2 = create_issue! |
|
32 | issue2 = create_issue! | |
@@ -159,29 +157,6 class IssueNestedSetTest < ActiveSupport::TestCase | |||||
159 | assert_equal [2, child.id, 2, 3], [grandchild.project_id, grandchild.root_id, grandchild.lft, grandchild.rgt] |
|
157 | assert_equal [2, child.id, 2, 3], [grandchild.project_id, grandchild.root_id, grandchild.lft, grandchild.rgt] | |
160 | end |
|
158 | end | |
161 |
|
159 | |||
162 | def test_invalid_move_to_another_project |
|
|||
163 | parent1 = create_issue! |
|
|||
164 | child = create_issue!(:parent_issue_id => parent1.id) |
|
|||
165 | grandchild = create_issue!(:parent_issue_id => child.id, :tracker_id => 2) |
|
|||
166 | Project.find(2).tracker_ids = [1] |
|
|||
167 |
|
||||
168 | parent1.reload |
|
|||
169 | assert_equal [1, parent1.id, 1, 6], [parent1.project_id, parent1.root_id, parent1.lft, parent1.rgt] |
|
|||
170 |
|
||||
171 | # child can not be moved to Project 2 because its child is on a disabled tracker |
|
|||
172 | child = Issue.find(child.id) |
|
|||
173 | child.project = Project.find(2) |
|
|||
174 | assert !child.save |
|
|||
175 | child.reload |
|
|||
176 | grandchild.reload |
|
|||
177 | parent1.reload |
|
|||
178 |
|
||||
179 | # no change |
|
|||
180 | assert_equal [1, parent1.id, 1, 6], [parent1.project_id, parent1.root_id, parent1.lft, parent1.rgt] |
|
|||
181 | assert_equal [1, parent1.id, 2, 5], [child.project_id, child.root_id, child.lft, child.rgt] |
|
|||
182 | assert_equal [1, parent1.id, 3, 4], [grandchild.project_id, grandchild.root_id, grandchild.lft, grandchild.rgt] |
|
|||
183 | end |
|
|||
184 |
|
||||
185 | def test_moving_an_issue_to_a_descendant_should_not_validate |
|
160 | def test_moving_an_issue_to_a_descendant_should_not_validate | |
186 | parent1 = create_issue! |
|
161 | parent1 = create_issue! | |
187 | parent2 = create_issue! |
|
162 | parent2 = create_issue! |
General Comments 0
You need to be logged in to leave comments.
Login now