##// END OF EJS Templates
Missing fixtures....
Jean-Philippe Lang -
r11232:6f21796c3422
parent child
Show More
@@ -1,146 +1,147
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
33
33 def setup
34 def setup
34 User.current = nil
35 User.current = nil
35 @request.session[:user_id] = 3
36 @request.session[:user_id] = 3
36 end
37 end
37
38
38 def test_create
39 def test_create
39 assert_difference 'IssueRelation.count' do
40 assert_difference 'IssueRelation.count' do
40 post :create, :issue_id => 1,
41 post :create, :issue_id => 1,
41 :relation => {:issue_to_id => '2', :relation_type => 'relates', :delay => ''}
42 :relation => {:issue_to_id => '2', :relation_type => 'relates', :delay => ''}
42 end
43 end
43 relation = IssueRelation.first(:order => 'id DESC')
44 relation = IssueRelation.first(:order => 'id DESC')
44 assert_equal 1, relation.issue_from_id
45 assert_equal 1, relation.issue_from_id
45 assert_equal 2, relation.issue_to_id
46 assert_equal 2, relation.issue_to_id
46 assert_equal 'relates', relation.relation_type
47 assert_equal 'relates', relation.relation_type
47 end
48 end
48
49
49 def test_create_xhr
50 def test_create_xhr
50 assert_difference 'IssueRelation.count' do
51 assert_difference 'IssueRelation.count' do
51 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 => ''}
52 assert_response :success
53 assert_response :success
53 assert_template 'create'
54 assert_template 'create'
54 assert_equal 'text/javascript', response.content_type
55 assert_equal 'text/javascript', response.content_type
55 end
56 end
56 relation = IssueRelation.first(:order => 'id DESC')
57 relation = IssueRelation.first(:order => 'id DESC')
57 assert_equal 3, relation.issue_from_id
58 assert_equal 3, relation.issue_from_id
58 assert_equal 1, relation.issue_to_id
59 assert_equal 1, relation.issue_to_id
59
60
60 assert_match /Bug #1/, response.body
61 assert_match /Bug #1/, response.body
61 end
62 end
62
63
63 def test_create_should_accept_id_with_hash
64 def test_create_should_accept_id_with_hash
64 assert_difference 'IssueRelation.count' do
65 assert_difference 'IssueRelation.count' do
65 post :create, :issue_id => 1,
66 post :create, :issue_id => 1,
66 :relation => {:issue_to_id => '#2', :relation_type => 'relates', :delay => ''}
67 :relation => {:issue_to_id => '#2', :relation_type => 'relates', :delay => ''}
67 end
68 end
68 relation = IssueRelation.first(:order => 'id DESC')
69 relation = IssueRelation.first(:order => 'id DESC')
69 assert_equal 2, relation.issue_to_id
70 assert_equal 2, relation.issue_to_id
70 end
71 end
71
72
72 def test_create_should_strip_id
73 def test_create_should_strip_id
73 assert_difference 'IssueRelation.count' do
74 assert_difference 'IssueRelation.count' do
74 post :create, :issue_id => 1,
75 post :create, :issue_id => 1,
75 :relation => {:issue_to_id => ' 2 ', :relation_type => 'relates', :delay => ''}
76 :relation => {:issue_to_id => ' 2 ', :relation_type => 'relates', :delay => ''}
76 end
77 end
77 relation = IssueRelation.first(:order => 'id DESC')
78 relation = IssueRelation.first(:order => 'id DESC')
78 assert_equal 2, relation.issue_to_id
79 assert_equal 2, relation.issue_to_id
79 end
80 end
80
81
81 def test_create_should_not_break_with_non_numerical_id
82 def test_create_should_not_break_with_non_numerical_id
82 assert_no_difference 'IssueRelation.count' do
83 assert_no_difference 'IssueRelation.count' do
83 assert_nothing_raised do
84 assert_nothing_raised do
84 post :create, :issue_id => 1,
85 post :create, :issue_id => 1,
85 :relation => {:issue_to_id => 'foo', :relation_type => 'relates', :delay => ''}
86 :relation => {:issue_to_id => 'foo', :relation_type => 'relates', :delay => ''}
86 end
87 end
87 end
88 end
88 end
89 end
89
90
90 def test_create_follows_relation_should_update_relations_list
91 def test_create_follows_relation_should_update_relations_list
91 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)
92 issue2 = Issue.generate!
93 issue2 = Issue.generate!
93
94
94 assert_difference 'IssueRelation.count' do
95 assert_difference 'IssueRelation.count' do
95 xhr :post, :create, :issue_id => issue2.id,
96 xhr :post, :create, :issue_id => issue2.id,
96 :relation => {:issue_to_id => issue1.id, :relation_type => 'follows', :delay => ''}
97 :relation => {:issue_to_id => issue1.id, :relation_type => 'follows', :delay => ''}
97 end
98 end
98 assert_match /Followed issue/, response.body
99 assert_match /Followed issue/, response.body
99 end
100 end
100
101
101 def test_should_create_relations_with_visible_issues_only
102 def test_should_create_relations_with_visible_issues_only
102 Setting.cross_project_issue_relations = '1'
103 Setting.cross_project_issue_relations = '1'
103 assert_nil Issue.visible(User.find(3)).find_by_id(4)
104 assert_nil Issue.visible(User.find(3)).find_by_id(4)
104
105
105 assert_no_difference 'IssueRelation.count' do
106 assert_no_difference 'IssueRelation.count' do
106 post :create, :issue_id => 1,
107 post :create, :issue_id => 1,
107 :relation => {:issue_to_id => '4', :relation_type => 'relates', :delay => ''}
108 :relation => {:issue_to_id => '4', :relation_type => 'relates', :delay => ''}
108 end
109 end
109 end
110 end
110
111
111 should "prevent relation creation when there's a circular dependency"
112 should "prevent relation creation when there's a circular dependency"
112
113
113 def test_create_xhr_with_failure
114 def test_create_xhr_with_failure
114 assert_no_difference 'IssueRelation.count' do
115 assert_no_difference 'IssueRelation.count' do
115 xhr :post, :create, :issue_id => 3, :relation => {:issue_to_id => '999', :relation_type => 'relates', :delay => ''}
116 xhr :post, :create, :issue_id => 3, :relation => {:issue_to_id => '999', :relation_type => 'relates', :delay => ''}
116
117
117 assert_response :success
118 assert_response :success
118 assert_template 'create'
119 assert_template 'create'
119 assert_equal 'text/javascript', response.content_type
120 assert_equal 'text/javascript', response.content_type
120 end
121 end
121
122
122 assert_match /errorExplanation/, response.body
123 assert_match /errorExplanation/, response.body
123 end
124 end
124
125
125 def test_destroy
126 def test_destroy
126 assert_difference 'IssueRelation.count', -1 do
127 assert_difference 'IssueRelation.count', -1 do
127 delete :destroy, :id => '2'
128 delete :destroy, :id => '2'
128 end
129 end
129 end
130 end
130
131
131 def test_destroy_xhr
132 def test_destroy_xhr
132 IssueRelation.create!(:relation_type => IssueRelation::TYPE_RELATES) do |r|
133 IssueRelation.create!(:relation_type => IssueRelation::TYPE_RELATES) do |r|
133 r.issue_from_id = 3
134 r.issue_from_id = 3
134 r.issue_to_id = 1
135 r.issue_to_id = 1
135 end
136 end
136
137
137 assert_difference 'IssueRelation.count', -1 do
138 assert_difference 'IssueRelation.count', -1 do
138 xhr :delete, :destroy, :id => '2'
139 xhr :delete, :destroy, :id => '2'
139
140
140 assert_response :success
141 assert_response :success
141 assert_template 'destroy'
142 assert_template 'destroy'
142 assert_equal 'text/javascript', response.content_type
143 assert_equal 'text/javascript', response.content_type
143 assert_match /relation-2/, response.body
144 assert_match /relation-2/, response.body
144 end
145 end
145 end
146 end
146 end
147 end
General Comments 0
You need to be logged in to leave comments. Login now