Mercurial > hg > soundsoftware-site
comparison test/functional/repositories_subversion_controller_test.rb @ 909:cbb26bc654de redmine-1.3
Update to Redmine 1.3-stable branch (Redmine SVN rev 8964)
author | Chris Cannam |
---|---|
date | Fri, 24 Feb 2012 19:09:32 +0000 |
parents | cbce1fd3b1b7 |
children | 433d4f72a19b |
comparison
equal
deleted
inserted
replaced
908:c6c2cbd0afee | 909:cbb26bc654de |
---|---|
25 fixtures :projects, :users, :roles, :members, :member_roles, :enabled_modules, | 25 fixtures :projects, :users, :roles, :members, :member_roles, :enabled_modules, |
26 :repositories, :issues, :issue_statuses, :changesets, :changes, | 26 :repositories, :issues, :issue_statuses, :changesets, :changes, |
27 :issue_categories, :enumerations, :custom_fields, :custom_values, :trackers | 27 :issue_categories, :enumerations, :custom_fields, :custom_values, :trackers |
28 | 28 |
29 PRJ_ID = 3 | 29 PRJ_ID = 3 |
30 NUM_REV = 11 | |
30 | 31 |
31 def setup | 32 def setup |
32 @controller = RepositoriesController.new | 33 @controller = RepositoriesController.new |
33 @request = ActionController::TestRequest.new | 34 @request = ActionController::TestRequest.new |
34 @response = ActionController::TestResponse.new | 35 @response = ActionController::TestResponse.new |
41 assert @repository | 42 assert @repository |
42 end | 43 end |
43 | 44 |
44 if repository_configured?('subversion') | 45 if repository_configured?('subversion') |
45 def test_show | 46 def test_show |
46 @repository.fetch_changesets | 47 assert_equal 0, @repository.changesets.count |
47 @repository.reload | 48 @repository.fetch_changesets |
49 @project.reload | |
50 assert_equal NUM_REV, @repository.changesets.count | |
48 get :show, :id => PRJ_ID | 51 get :show, :id => PRJ_ID |
49 assert_response :success | 52 assert_response :success |
50 assert_template 'show' | 53 assert_template 'show' |
51 assert_not_nil assigns(:entries) | 54 assert_not_nil assigns(:entries) |
52 assert_not_nil assigns(:changesets) | 55 assert_not_nil assigns(:changesets) |
53 end | 56 end |
54 | 57 |
55 def test_browse_root | 58 def test_browse_root |
56 @repository.fetch_changesets | 59 assert_equal 0, @repository.changesets.count |
57 @repository.reload | 60 @repository.fetch_changesets |
61 @project.reload | |
62 assert_equal NUM_REV, @repository.changesets.count | |
58 get :show, :id => PRJ_ID | 63 get :show, :id => PRJ_ID |
59 assert_response :success | 64 assert_response :success |
60 assert_template 'show' | 65 assert_template 'show' |
61 assert_not_nil assigns(:entries) | 66 assert_not_nil assigns(:entries) |
62 entry = assigns(:entries).detect {|e| e.name == 'subversion_test'} | 67 entry = assigns(:entries).detect {|e| e.name == 'subversion_test'} |
63 assert_equal 'dir', entry.kind | 68 assert_equal 'dir', entry.kind |
64 end | 69 end |
65 | 70 |
66 def test_browse_directory | 71 def test_browse_directory |
67 @repository.fetch_changesets | 72 assert_equal 0, @repository.changesets.count |
68 @repository.reload | 73 @repository.fetch_changesets |
74 @project.reload | |
75 assert_equal NUM_REV, @repository.changesets.count | |
69 get :show, :id => PRJ_ID, :path => ['subversion_test'] | 76 get :show, :id => PRJ_ID, :path => ['subversion_test'] |
70 assert_response :success | 77 assert_response :success |
71 assert_template 'show' | 78 assert_template 'show' |
72 assert_not_nil assigns(:entries) | 79 assert_not_nil assigns(:entries) |
73 assert_equal ['[folder_with_brackets]', 'folder', '.project', 'helloworld.c', 'textfile.txt'], | 80 assert_equal [ |
74 assigns(:entries).collect(&:name) | 81 '[folder_with_brackets]', 'folder', '.project', |
82 'helloworld.c', 'textfile.txt' | |
83 ], | |
84 assigns(:entries).collect(&:name) | |
75 entry = assigns(:entries).detect {|e| e.name == 'helloworld.c'} | 85 entry = assigns(:entries).detect {|e| e.name == 'helloworld.c'} |
76 assert_equal 'file', entry.kind | 86 assert_equal 'file', entry.kind |
77 assert_equal 'subversion_test/helloworld.c', entry.path | 87 assert_equal 'subversion_test/helloworld.c', entry.path |
78 assert_tag :a, :content => 'helloworld.c', :attributes => { :class => /text\-x\-c/ } | 88 assert_tag :a, :content => 'helloworld.c', :attributes => { :class => /text\-x\-c/ } |
79 end | 89 end |
80 | 90 |
81 def test_browse_at_given_revision | 91 def test_browse_at_given_revision |
82 @repository.fetch_changesets | 92 assert_equal 0, @repository.changesets.count |
83 @repository.reload | 93 @repository.fetch_changesets |
94 @project.reload | |
95 assert_equal NUM_REV, @repository.changesets.count | |
84 get :show, :id => PRJ_ID, :path => ['subversion_test'], :rev => 4 | 96 get :show, :id => PRJ_ID, :path => ['subversion_test'], :rev => 4 |
85 assert_response :success | 97 assert_response :success |
86 assert_template 'show' | 98 assert_template 'show' |
87 assert_not_nil assigns(:entries) | 99 assert_not_nil assigns(:entries) |
88 assert_equal ['folder', '.project', 'helloworld.c', 'helloworld.rb', 'textfile.txt'], | 100 assert_equal ['folder', '.project', 'helloworld.c', 'helloworld.rb', 'textfile.txt'], |
89 assigns(:entries).collect(&:name) | 101 assigns(:entries).collect(&:name) |
90 end | 102 end |
91 | 103 |
92 def test_file_changes | 104 def test_file_changes |
93 @repository.fetch_changesets | 105 assert_equal 0, @repository.changesets.count |
94 @repository.reload | 106 @repository.fetch_changesets |
107 @project.reload | |
108 assert_equal NUM_REV, @repository.changesets.count | |
95 get :changes, :id => PRJ_ID, :path => ['subversion_test', 'folder', 'helloworld.rb' ] | 109 get :changes, :id => PRJ_ID, :path => ['subversion_test', 'folder', 'helloworld.rb' ] |
96 assert_response :success | 110 assert_response :success |
97 assert_template 'changes' | 111 assert_template 'changes' |
98 | 112 |
99 changesets = assigns(:changesets) | 113 changesets = assigns(:changesets) |
110 :child => { :tag => 'span', :content => 'native' } } | 124 :child => { :tag => 'span', :content => 'native' } } |
111 end | 125 end |
112 end | 126 end |
113 | 127 |
114 def test_directory_changes | 128 def test_directory_changes |
115 @repository.fetch_changesets | 129 assert_equal 0, @repository.changesets.count |
116 @repository.reload | 130 @repository.fetch_changesets |
131 @project.reload | |
132 assert_equal NUM_REV, @repository.changesets.count | |
117 get :changes, :id => PRJ_ID, :path => ['subversion_test', 'folder' ] | 133 get :changes, :id => PRJ_ID, :path => ['subversion_test', 'folder' ] |
118 assert_response :success | 134 assert_response :success |
119 assert_template 'changes' | 135 assert_template 'changes' |
120 | 136 |
121 changesets = assigns(:changesets) | 137 changesets = assigns(:changesets) |
122 assert_not_nil changesets | 138 assert_not_nil changesets |
123 assert_equal %w(10 9 7 6 5 2), changesets.collect(&:revision) | 139 assert_equal %w(10 9 7 6 5 2), changesets.collect(&:revision) |
124 end | 140 end |
125 | 141 |
126 def test_entry | 142 def test_entry |
127 @repository.fetch_changesets | 143 assert_equal 0, @repository.changesets.count |
128 @repository.reload | 144 @repository.fetch_changesets |
145 @project.reload | |
146 assert_equal NUM_REV, @repository.changesets.count | |
129 get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c'] | 147 get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c'] |
130 assert_response :success | 148 assert_response :success |
131 assert_template 'entry' | 149 assert_template 'entry' |
132 end | 150 end |
133 | 151 |
134 def test_entry_should_send_if_too_big | 152 def test_entry_should_send_if_too_big |
135 @repository.fetch_changesets | 153 assert_equal 0, @repository.changesets.count |
136 @repository.reload | 154 @repository.fetch_changesets |
155 @project.reload | |
156 assert_equal NUM_REV, @repository.changesets.count | |
137 # no files in the test repo is larger than 1KB... | 157 # no files in the test repo is larger than 1KB... |
138 with_settings :file_max_size_displayed => 0 do | 158 with_settings :file_max_size_displayed => 0 do |
139 get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c'] | 159 get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c'] |
140 assert_response :success | 160 assert_response :success |
141 assert_template '' | 161 assert_template '' |
142 assert_equal 'attachment; filename="helloworld.c"', @response.headers['Content-Disposition'] | 162 assert_equal 'attachment; filename="helloworld.c"', |
163 @response.headers['Content-Disposition'] | |
143 end | 164 end |
144 end | 165 end |
145 | 166 |
146 def test_entry_at_given_revision | 167 def test_entry_at_given_revision |
147 @repository.fetch_changesets | 168 assert_equal 0, @repository.changesets.count |
148 @repository.reload | 169 @repository.fetch_changesets |
170 @project.reload | |
171 assert_equal NUM_REV, @repository.changesets.count | |
149 get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.rb'], :rev => 2 | 172 get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.rb'], :rev => 2 |
150 assert_response :success | 173 assert_response :success |
151 assert_template 'entry' | 174 assert_template 'entry' |
152 # this line was removed in r3 and file was moved in r6 | 175 # this line was removed in r3 and file was moved in r6 |
153 assert_tag :tag => 'td', :attributes => { :class => /line-code/}, | 176 assert_tag :tag => 'td', :attributes => { :class => /line-code/}, |
154 :content => /Here's the code/ | 177 :content => /Here's the code/ |
155 end | 178 end |
156 | 179 |
157 def test_entry_not_found | 180 def test_entry_not_found |
158 @repository.fetch_changesets | 181 assert_equal 0, @repository.changesets.count |
159 @repository.reload | 182 @repository.fetch_changesets |
183 @project.reload | |
184 assert_equal NUM_REV, @repository.changesets.count | |
160 get :entry, :id => PRJ_ID, :path => ['subversion_test', 'zzz.c'] | 185 get :entry, :id => PRJ_ID, :path => ['subversion_test', 'zzz.c'] |
161 assert_tag :tag => 'p', :attributes => { :id => /errorExplanation/ }, | 186 assert_tag :tag => 'p', :attributes => { :id => /errorExplanation/ }, |
162 :content => /The entry or revision was not found in the repository/ | 187 :content => /The entry or revision was not found in the repository/ |
163 end | 188 end |
164 | 189 |
165 def test_entry_download | 190 def test_entry_download |
166 @repository.fetch_changesets | 191 assert_equal 0, @repository.changesets.count |
167 @repository.reload | 192 @repository.fetch_changesets |
193 @project.reload | |
194 assert_equal NUM_REV, @repository.changesets.count | |
168 get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c'], :format => 'raw' | 195 get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c'], :format => 'raw' |
169 assert_response :success | 196 assert_response :success |
170 assert_template '' | 197 assert_template '' |
171 assert_equal 'attachment; filename="helloworld.c"', @response.headers['Content-Disposition'] | 198 assert_equal 'attachment; filename="helloworld.c"', @response.headers['Content-Disposition'] |
172 end | 199 end |
173 | 200 |
174 def test_directory_entry | 201 def test_directory_entry |
175 @repository.fetch_changesets | 202 assert_equal 0, @repository.changesets.count |
176 @repository.reload | 203 @repository.fetch_changesets |
204 @project.reload | |
205 assert_equal NUM_REV, @repository.changesets.count | |
177 get :entry, :id => PRJ_ID, :path => ['subversion_test', 'folder'] | 206 get :entry, :id => PRJ_ID, :path => ['subversion_test', 'folder'] |
178 assert_response :success | 207 assert_response :success |
179 assert_template 'show' | 208 assert_template 'show' |
180 assert_not_nil assigns(:entry) | 209 assert_not_nil assigns(:entry) |
181 assert_equal 'folder', assigns(:entry).name | 210 assert_equal 'folder', assigns(:entry).name |
182 end | 211 end |
183 | 212 |
184 # TODO: this test needs fixtures. | 213 # TODO: this test needs fixtures. |
185 def test_revision | 214 def test_revision |
186 @repository.fetch_changesets | |
187 @repository.reload | |
188 get :revision, :id => 1, :rev => 2 | 215 get :revision, :id => 1, :rev => 2 |
189 assert_response :success | 216 assert_response :success |
190 assert_template 'revision' | 217 assert_template 'revision' |
191 assert_tag :tag => 'ul', | 218 assert_tag :tag => 'ul', |
192 :child => { :tag => 'li', | 219 :child => { :tag => 'li', |
201 } | 228 } |
202 } | 229 } |
203 end | 230 end |
204 | 231 |
205 def test_invalid_revision | 232 def test_invalid_revision |
206 @repository.fetch_changesets | 233 assert_equal 0, @repository.changesets.count |
207 @repository.reload | 234 @repository.fetch_changesets |
235 @project.reload | |
236 assert_equal NUM_REV, @repository.changesets.count | |
208 get :revision, :id => PRJ_ID, :rev => 'something_weird' | 237 get :revision, :id => PRJ_ID, :rev => 'something_weird' |
209 assert_response 404 | 238 assert_response 404 |
210 assert_error_tag :content => /was not found/ | 239 assert_error_tag :content => /was not found/ |
211 end | 240 end |
212 | 241 |
215 assert_response 404 | 244 assert_response 404 |
216 assert_error_tag :content => /was not found/ | 245 assert_error_tag :content => /was not found/ |
217 end | 246 end |
218 | 247 |
219 def test_empty_revision | 248 def test_empty_revision |
220 @repository.fetch_changesets | 249 assert_equal 0, @repository.changesets.count |
221 @repository.reload | 250 @repository.fetch_changesets |
251 @project.reload | |
252 assert_equal NUM_REV, @repository.changesets.count | |
222 ['', ' ', nil].each do |r| | 253 ['', ' ', nil].each do |r| |
223 get :revision, :id => PRJ_ID, :rev => r | 254 get :revision, :id => PRJ_ID, :rev => r |
224 assert_response 404 | 255 assert_response 404 |
225 assert_error_tag :content => /was not found/ | 256 assert_error_tag :content => /was not found/ |
226 end | 257 end |
248 } | 279 } |
249 } | 280 } |
250 end | 281 end |
251 | 282 |
252 def test_revision_diff | 283 def test_revision_diff |
253 @repository.fetch_changesets | 284 assert_equal 0, @repository.changesets.count |
254 @repository.reload | 285 @repository.fetch_changesets |
255 get :diff, :id => PRJ_ID, :rev => 3 | 286 @project.reload |
256 assert_response :success | 287 assert_equal NUM_REV, @repository.changesets.count |
257 assert_template 'diff' | 288 ['inline', 'sbs'].each do |dt| |
258 | 289 get :diff, :id => PRJ_ID, :rev => 3, :type => dt |
259 assert_tag :tag => 'h2', :content => /3/ | 290 assert_response :success |
291 assert_template 'diff' | |
292 assert_tag :tag => 'h2', | |
293 :content => / 3/ | |
294 end | |
260 end | 295 end |
261 | 296 |
262 def test_directory_diff | 297 def test_directory_diff |
263 @repository.fetch_changesets | 298 assert_equal 0, @repository.changesets.count |
264 @repository.reload | 299 @repository.fetch_changesets |
265 get :diff, :id => PRJ_ID, :rev => 6, :rev_to => 2, :path => ['subversion_test', 'folder'] | 300 @project.reload |
266 assert_response :success | 301 assert_equal NUM_REV, @repository.changesets.count |
267 assert_template 'diff' | 302 ['inline', 'sbs'].each do |dt| |
268 | 303 get :diff, :id => PRJ_ID, :rev => 6, :rev_to => 2, |
269 diff = assigns(:diff) | 304 :path => ['subversion_test', 'folder'], :type => dt |
270 assert_not_nil diff | 305 assert_response :success |
271 # 2 files modified | 306 assert_template 'diff' |
272 assert_equal 2, Redmine::UnifiedDiff.new(diff).size | 307 |
273 | 308 diff = assigns(:diff) |
274 assert_tag :tag => 'h2', :content => /2:6/ | 309 assert_not_nil diff |
310 # 2 files modified | |
311 assert_equal 2, Redmine::UnifiedDiff.new(diff).size | |
312 assert_tag :tag => 'h2', :content => /2:6/ | |
313 end | |
275 end | 314 end |
276 | 315 |
277 def test_annotate | 316 def test_annotate |
278 @repository.fetch_changesets | 317 assert_equal 0, @repository.changesets.count |
279 @repository.reload | 318 @repository.fetch_changesets |
319 @project.reload | |
320 assert_equal NUM_REV, @repository.changesets.count | |
280 get :annotate, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c'] | 321 get :annotate, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c'] |
281 assert_response :success | 322 assert_response :success |
282 assert_template 'annotate' | 323 assert_template 'annotate' |
283 end | 324 end |
284 | 325 |
285 def test_annotate_at_given_revision | 326 def test_annotate_at_given_revision |
286 @repository.fetch_changesets | 327 assert_equal 0, @repository.changesets.count |
287 @repository.reload | 328 @repository.fetch_changesets |
329 @project.reload | |
330 assert_equal NUM_REV, @repository.changesets.count | |
288 get :annotate, :id => PRJ_ID, :rev => 8, :path => ['subversion_test', 'helloworld.c'] | 331 get :annotate, :id => PRJ_ID, :rev => 8, :path => ['subversion_test', 'helloworld.c'] |
289 assert_response :success | 332 assert_response :success |
290 assert_template 'annotate' | 333 assert_template 'annotate' |
291 assert_tag :tag => 'h2', :content => /@ 8/ | 334 assert_tag :tag => 'h2', :content => /@ 8/ |
335 end | |
336 | |
337 def test_destroy_valid_repository | |
338 @request.session[:user_id] = 1 # admin | |
339 assert_equal 0, @repository.changesets.count | |
340 @repository.fetch_changesets | |
341 @project.reload | |
342 assert_equal NUM_REV, @repository.changesets.count | |
343 | |
344 get :destroy, :id => PRJ_ID | |
345 assert_response 302 | |
346 @project.reload | |
347 assert_nil @project.repository | |
348 end | |
349 | |
350 def test_destroy_invalid_repository | |
351 @request.session[:user_id] = 1 # admin | |
352 assert_equal 0, @repository.changesets.count | |
353 @repository.fetch_changesets | |
354 @project.reload | |
355 assert_equal NUM_REV, @repository.changesets.count | |
356 | |
357 get :destroy, :id => PRJ_ID | |
358 assert_response 302 | |
359 @project.reload | |
360 assert_nil @project.repository | |
361 | |
362 @repository = Repository::Subversion.create( | |
363 :project => @project, | |
364 :url => "file:///invalid") | |
365 assert @repository | |
366 @repository.fetch_changesets | |
367 @project.reload | |
368 assert_equal 0, @repository.changesets.count | |
369 | |
370 get :destroy, :id => PRJ_ID | |
371 assert_response 302 | |
372 @project.reload | |
373 assert_nil @project.repository | |
292 end | 374 end |
293 else | 375 else |
294 puts "Subversion test repository NOT FOUND. Skipping functional tests !!!" | 376 puts "Subversion test repository NOT FOUND. Skipping functional tests !!!" |
295 def test_fake; assert true end | 377 def test_fake; assert true end |
296 end | 378 end |