##// END OF EJS Templates
Removed deferred test, circular relations are unit tested....
Jean-Philippe Lang -
r11245:870d9bad86b4
parent child
Show More
@@ -1,147 +1,145
1 # Redmine - project management software
1 # Redmine - project management software
2 # Copyright (C) 2006-2013 Jean-Philippe Lang
2 # Copyright (C) 2006-2013 Jean-Philippe Lang
3 #
3 #
4 # This program is free software; you can redistribute it and/or
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
7 # of the License, or (at your option) any later version.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU General Public License
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
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.
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
18 require File.expand_path('../../test_helper', __FILE__)
18 require File.expand_path('../../test_helper', __FILE__)
19
19
20 class IssueRelationsControllerTest < ActionController::TestCase
20 class IssueRelationsControllerTest < ActionController::TestCase
21 fixtures :projects,
21 fixtures :projects,
22 :users,
22 :users,
23 :roles,
23 :roles,
24 :members,
24 :members,
25 :member_roles,
25 :member_roles,
26 :issues,
26 :issues,
27 :issue_statuses,
27 :issue_statuses,
28 :issue_relations,
28 :issue_relations,
29 :enabled_modules,
29 :enabled_modules,
30 :enumerations,
30 :enumerations,
31 :trackers,
31 :trackers,
32 :projects_trackers
32 :projects_trackers
33
33
34 def setup
34 def setup
35 User.current = nil
35 User.current = nil
36 @request.session[:user_id] = 3
36 @request.session[:user_id] = 3
37 end
37 end
38
38
39 def test_create
39 def test_create
40 assert_difference 'IssueRelation.count' do
40 assert_difference 'IssueRelation.count' do
41 post :create, :issue_id => 1,
41 post :create, :issue_id => 1,
42 :relation => {:issue_to_id => '2', :relation_type => 'relates', :delay => ''}
42 :relation => {:issue_to_id => '2', :relation_type => 'relates', :delay => ''}
43 end
43 end
44 relation = IssueRelation.first(:order => 'id DESC')
44 relation = IssueRelation.first(:order => 'id DESC')
45 assert_equal 1, relation.issue_from_id
45 assert_equal 1, relation.issue_from_id
46 assert_equal 2, relation.issue_to_id
46 assert_equal 2, relation.issue_to_id
47 assert_equal 'relates', relation.relation_type
47 assert_equal 'relates', relation.relation_type
48 end
48 end
49
49
50 def test_create_xhr
50 def test_create_xhr
51 assert_difference 'IssueRelation.count' do
51 assert_difference 'IssueRelation.count' do
52 xhr :post, :create, :issue_id => 3, :relation => {:issue_to_id => '1', :relation_type => 'relates', :delay => ''}
52 xhr :post, :create, :issue_id => 3, :relation => {:issue_to_id => '1', :relation_type => 'relates', :delay => ''}
53 assert_response :success
53 assert_response :success
54 assert_template 'create'
54 assert_template 'create'
55 assert_equal 'text/javascript', response.content_type
55 assert_equal 'text/javascript', response.content_type
56 end
56 end
57 relation = IssueRelation.first(:order => 'id DESC')
57 relation = IssueRelation.first(:order => 'id DESC')
58 assert_equal 3, relation.issue_from_id
58 assert_equal 3, relation.issue_from_id
59 assert_equal 1, relation.issue_to_id
59 assert_equal 1, relation.issue_to_id
60
60
61 assert_match /Bug #1/, response.body
61 assert_match /Bug #1/, response.body
62 end
62 end
63
63
64 def test_create_should_accept_id_with_hash
64 def test_create_should_accept_id_with_hash
65 assert_difference 'IssueRelation.count' do
65 assert_difference 'IssueRelation.count' do
66 post :create, :issue_id => 1,
66 post :create, :issue_id => 1,
67 :relation => {:issue_to_id => '#2', :relation_type => 'relates', :delay => ''}
67 :relation => {:issue_to_id => '#2', :relation_type => 'relates', :delay => ''}
68 end
68 end
69 relation = IssueRelation.first(:order => 'id DESC')
69 relation = IssueRelation.first(:order => 'id DESC')
70 assert_equal 2, relation.issue_to_id
70 assert_equal 2, relation.issue_to_id
71 end
71 end
72
72
73 def test_create_should_strip_id
73 def test_create_should_strip_id
74 assert_difference 'IssueRelation.count' do
74 assert_difference 'IssueRelation.count' do
75 post :create, :issue_id => 1,
75 post :create, :issue_id => 1,
76 :relation => {:issue_to_id => ' 2 ', :relation_type => 'relates', :delay => ''}
76 :relation => {:issue_to_id => ' 2 ', :relation_type => 'relates', :delay => ''}
77 end
77 end
78 relation = IssueRelation.first(:order => 'id DESC')
78 relation = IssueRelation.first(:order => 'id DESC')
79 assert_equal 2, relation.issue_to_id
79 assert_equal 2, relation.issue_to_id
80 end
80 end
81
81
82 def test_create_should_not_break_with_non_numerical_id
82 def test_create_should_not_break_with_non_numerical_id
83 assert_no_difference 'IssueRelation.count' do
83 assert_no_difference 'IssueRelation.count' do
84 assert_nothing_raised do
84 assert_nothing_raised do
85 post :create, :issue_id => 1,
85 post :create, :issue_id => 1,
86 :relation => {:issue_to_id => 'foo', :relation_type => 'relates', :delay => ''}
86 :relation => {:issue_to_id => 'foo', :relation_type => 'relates', :delay => ''}
87 end
87 end
88 end
88 end
89 end
89 end
90
90
91 def test_create_follows_relation_should_update_relations_list
91 def test_create_follows_relation_should_update_relations_list
92 issue1 = Issue.generate!(:subject => 'Followed issue', :start_date => Date.yesterday, :due_date => Date.today)
92 issue1 = Issue.generate!(:subject => 'Followed issue', :start_date => Date.yesterday, :due_date => Date.today)
93 issue2 = Issue.generate!
93 issue2 = Issue.generate!
94
94
95 assert_difference 'IssueRelation.count' do
95 assert_difference 'IssueRelation.count' do
96 xhr :post, :create, :issue_id => issue2.id,
96 xhr :post, :create, :issue_id => issue2.id,
97 :relation => {:issue_to_id => issue1.id, :relation_type => 'follows', :delay => ''}
97 :relation => {:issue_to_id => issue1.id, :relation_type => 'follows', :delay => ''}
98 end
98 end
99 assert_match /Followed issue/, response.body
99 assert_match /Followed issue/, response.body
100 end
100 end
101
101
102 def test_should_create_relations_with_visible_issues_only
102 def test_should_create_relations_with_visible_issues_only
103 Setting.cross_project_issue_relations = '1'
103 Setting.cross_project_issue_relations = '1'
104 assert_nil Issue.visible(User.find(3)).find_by_id(4)
104 assert_nil Issue.visible(User.find(3)).find_by_id(4)
105
105
106 assert_no_difference 'IssueRelation.count' do
106 assert_no_difference 'IssueRelation.count' do
107 post :create, :issue_id => 1,
107 post :create, :issue_id => 1,
108 :relation => {:issue_to_id => '4', :relation_type => 'relates', :delay => ''}
108 :relation => {:issue_to_id => '4', :relation_type => 'relates', :delay => ''}
109 end
109 end
110 end
110 end
111
111
112 should "prevent relation creation when there's a circular dependency"
113
114 def test_create_xhr_with_failure
112 def test_create_xhr_with_failure
115 assert_no_difference 'IssueRelation.count' do
113 assert_no_difference 'IssueRelation.count' do
116 xhr :post, :create, :issue_id => 3, :relation => {:issue_to_id => '999', :relation_type => 'relates', :delay => ''}
114 xhr :post, :create, :issue_id => 3, :relation => {:issue_to_id => '999', :relation_type => 'relates', :delay => ''}
117
115
118 assert_response :success
116 assert_response :success
119 assert_template 'create'
117 assert_template 'create'
120 assert_equal 'text/javascript', response.content_type
118 assert_equal 'text/javascript', response.content_type
121 end
119 end
122
120
123 assert_match /errorExplanation/, response.body
121 assert_match /errorExplanation/, response.body
124 end
122 end
125
123
126 def test_destroy
124 def test_destroy
127 assert_difference 'IssueRelation.count', -1 do
125 assert_difference 'IssueRelation.count', -1 do
128 delete :destroy, :id => '2'
126 delete :destroy, :id => '2'
129 end
127 end
130 end
128 end
131
129
132 def test_destroy_xhr
130 def test_destroy_xhr
133 IssueRelation.create!(:relation_type => IssueRelation::TYPE_RELATES) do |r|
131 IssueRelation.create!(:relation_type => IssueRelation::TYPE_RELATES) do |r|
134 r.issue_from_id = 3
132 r.issue_from_id = 3
135 r.issue_to_id = 1
133 r.issue_to_id = 1
136 end
134 end
137
135
138 assert_difference 'IssueRelation.count', -1 do
136 assert_difference 'IssueRelation.count', -1 do
139 xhr :delete, :destroy, :id => '2'
137 xhr :delete, :destroy, :id => '2'
140
138
141 assert_response :success
139 assert_response :success
142 assert_template 'destroy'
140 assert_template 'destroy'
143 assert_equal 'text/javascript', response.content_type
141 assert_equal 'text/javascript', response.content_type
144 assert_match /relation-2/, response.body
142 assert_match /relation-2/, response.body
145 end
143 end
146 end
144 end
147 end
145 end
General Comments 0
You need to be logged in to leave comments. Login now