##// END OF EJS Templates
Moved tracker_id param....
Jean-Philippe Lang -
r14390:9a3b8e0b1eaa
parent child
Show More
@@ -1,213 +1,215
1 1 # Redmine - project management software
2 2 # Copyright (C) 2006-2015 Jean-Philippe Lang
3 3 #
4 4 # This program is free software; you can redistribute it and/or
5 5 # modify it under the terms of the GNU General Public License
6 6 # as published by the Free Software Foundation; either version 2
7 7 # of the License, or (at your option) any later version.
8 8 #
9 9 # This program is distributed in the hope that it will be useful,
10 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 12 # GNU General Public License for more details.
13 13 #
14 14 # You should have received a copy of the GNU General Public License
15 15 # along with this program; if not, write to the Free Software
16 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 17
18 18 require File.expand_path('../../test_helper', __FILE__)
19 19
20 20 class IssuesTest < Redmine::IntegrationTest
21 21 fixtures :projects,
22 22 :users, :email_addresses,
23 23 :roles,
24 24 :members,
25 25 :member_roles,
26 26 :trackers,
27 27 :projects_trackers,
28 28 :enabled_modules,
29 29 :issue_statuses,
30 30 :issues,
31 31 :enumerations,
32 32 :custom_fields,
33 33 :custom_values,
34 34 :custom_fields_trackers,
35 35 :attachments
36 36
37 37 # create an issue
38 38 def test_add_issue
39 39 log_user('jsmith', 'jsmith')
40 get '/projects/ecookbook/issues/new', :tracker_id => '1'
40
41 get '/projects/ecookbook/issues/new'
41 42 assert_response :success
42 43 assert_template 'issues/new'
43 44
44 45 issue = new_record(Issue) do
45 post '/projects/ecookbook/issues', :tracker_id => "1",
46 :issue => { :start_date => "2006-12-26",
46 post '/projects/ecookbook/issues',
47 :issue => { :tracker_id => "1",
48 :start_date => "2006-12-26",
47 49 :priority_id => "4",
48 50 :subject => "new test issue",
49 51 :category_id => "",
50 52 :description => "new issue",
51 53 :done_ratio => "0",
52 54 :due_date => "",
53 55 :assigned_to_id => "" },
54 56 :custom_fields => {'2' => 'Value for field 2'}
55 57 end
56 58 # check redirection
57 59 assert_redirected_to :controller => 'issues', :action => 'show', :id => issue
58 60 follow_redirect!
59 61 assert_equal issue, assigns(:issue)
60 62
61 63 # check issue attributes
62 64 assert_equal 'jsmith', issue.author.login
63 65 assert_equal 1, issue.project.id
64 66 assert_equal 1, issue.status.id
65 67 end
66 68
67 69 def test_create_issue_by_anonymous_without_permission_should_fail
68 70 Role.anonymous.remove_permission! :add_issues
69 71
70 72 assert_no_difference 'Issue.count' do
71 73 post '/projects/1/issues', :tracker_id => "1", :issue => {:subject => "new test issue"}
72 74 end
73 75 assert_response 302
74 76 end
75 77
76 78 def test_create_issue_by_anonymous_with_custom_permission_should_succeed
77 79 Role.anonymous.remove_permission! :add_issues
78 80 Member.create!(:project_id => 1, :principal => Group.anonymous, :role_ids => [3])
79 81
80 82 issue = new_record(Issue) do
81 83 post '/projects/1/issues', :tracker_id => "1", :issue => {:subject => "new test issue"}
82 84 assert_response 302
83 85 end
84 86 assert_equal User.anonymous, issue.author
85 87 end
86 88
87 89 # add then remove 2 attachments to an issue
88 90 def test_issue_attachments
89 91 log_user('jsmith', 'jsmith')
90 92 set_tmp_attachments_directory
91 93
92 94 attachment = new_record(Attachment) do
93 95 put '/issues/1',
94 96 :notes => 'Some notes',
95 97 :attachments => {'1' => {'file' => uploaded_test_file('testfile.txt', 'text/plain'), 'description' => 'This is an attachment'}}
96 98 assert_redirected_to "/issues/1"
97 99 end
98 100
99 101 assert_equal Issue.find(1), attachment.container
100 102 assert_equal 'testfile.txt', attachment.filename
101 103 assert_equal 'This is an attachment', attachment.description
102 104 # verify the size of the attachment stored in db
103 105 #assert_equal file_data_1.length, attachment.filesize
104 106 # verify that the attachment was written to disk
105 107 assert File.exist?(attachment.diskfile)
106 108
107 109 # remove the attachments
108 110 Issue.find(1).attachments.each(&:destroy)
109 111 assert_equal 0, Issue.find(1).attachments.length
110 112 end
111 113
112 114 def test_other_formats_links_on_index
113 115 get '/projects/ecookbook/issues'
114 116
115 117 %w(Atom PDF CSV).each do |format|
116 118 assert_select 'a[rel=nofollow][href=?]', "/projects/ecookbook/issues.#{format.downcase}", :text => format
117 119 end
118 120 end
119 121
120 122 def test_other_formats_links_on_index_without_project_id_in_url
121 123 get '/issues', :project_id => 'ecookbook'
122 124
123 125 %w(Atom PDF CSV).each do |format|
124 126 assert_select 'a[rel=nofollow][href=?]', "/projects/ecookbook/issues.#{format.downcase}", :text => format
125 127 end
126 128 end
127 129
128 130 def test_pagination_links_on_index
129 131 with_settings :per_page_options => '2' do
130 132 get '/projects/ecookbook/issues'
131 133
132 134 assert_select 'a[href=?]', '/projects/ecookbook/issues?page=2', :text => '2'
133 135 end
134 136 end
135 137
136 138 def test_pagination_links_on_index_without_project_id_in_url
137 139 with_settings :per_page_options => '2' do
138 140 get '/issues', :project_id => 'ecookbook'
139 141
140 142 assert_select 'a[href=?]', '/projects/ecookbook/issues?page=2', :text => '2'
141 143 end
142 144 end
143 145
144 146 def test_issue_with_user_custom_field
145 147 @field = IssueCustomField.create!(:name => 'Tester', :field_format => 'user', :is_for_all => true, :trackers => Tracker.all)
146 148 Role.anonymous.add_permission! :add_issues, :edit_issues
147 149 users = Project.find(1).users.uniq.sort
148 150 tester = users.first
149 151
150 152 # Issue form
151 153 get '/projects/ecookbook/issues/new'
152 154 assert_response :success
153 155 assert_select 'select[name=?]', "issue[custom_field_values][#{@field.id}]" do
154 156 assert_select 'option', users.size + 1 # +1 for blank value
155 157 assert_select 'option[value=?]', tester.id.to_s, :text => tester.name
156 158 end
157 159
158 160 # Create issue
159 161 issue = new_record(Issue) do
160 162 post '/projects/ecookbook/issues',
161 163 :issue => {
162 164 :tracker_id => '1',
163 165 :priority_id => '4',
164 166 :subject => 'Issue with user custom field',
165 167 :custom_field_values => {@field.id.to_s => users.first.id.to_s}
166 168 }
167 169 assert_response 302
168 170 end
169 171
170 172 # Issue view
171 173 follow_redirect!
172 174 assert_select 'th:contains("Tester:") + td', :text => tester.name
173 175 assert_select 'select[name=?]', "issue[custom_field_values][#{@field.id}]" do
174 176 assert_select 'option', users.size + 1 # +1 for blank value
175 177 assert_select 'option[value=?][selected=selected]', tester.id.to_s, :text => tester.name
176 178 end
177 179
178 180 new_tester = users[1]
179 181 with_settings :default_language => 'en' do
180 182 # Update issue
181 183 assert_difference 'Journal.count' do
182 184 put "/issues/#{issue.id}",
183 185 :notes => 'Updating custom field',
184 186 :issue => {
185 187 :custom_field_values => {@field.id.to_s => new_tester.id.to_s}
186 188 }
187 189 assert_redirected_to "/issues/#{issue.id}"
188 190 end
189 191 # Issue view
190 192 follow_redirect!
191 193 assert_select 'ul.details li', :text => "Tester changed from #{tester} to #{new_tester}"
192 194 end
193 195 end
194 196
195 197 def test_update_using_invalid_http_verbs
196 198 subject = 'Updated by an invalid http verb'
197 199
198 200 get '/issues/update/1', {:issue => {:subject => subject}}, credentials('jsmith')
199 201 assert_response 404
200 202 assert_not_equal subject, Issue.find(1).subject
201 203
202 204 post '/issues/1', {:issue => {:subject => subject}}, credentials('jsmith')
203 205 assert_response 404
204 206 assert_not_equal subject, Issue.find(1).subject
205 207 end
206 208
207 209 def test_get_watch_should_be_invalid
208 210 assert_no_difference 'Watcher.count' do
209 211 get '/watchers/watch?object_type=issue&object_id=1', {}, credentials('jsmith')
210 212 assert_response 404
211 213 end
212 214 end
213 215 end
General Comments 0
You need to be logged in to leave comments. Login now