##// END OF EJS Templates
Removed assertions on blank template....
Jean-Philippe Lang -
r8888:4f153083ac00
parent child
Show More
@@ -1,397 +1,395
1 1 # Redmine - project management software
2 2 # Copyright (C) 2006-2011 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 RepositoriesSubversionControllerTest < ActionController::TestCase
21 21 tests RepositoriesController
22 22
23 23 fixtures :projects, :users, :roles, :members, :member_roles, :enabled_modules,
24 24 :repositories, :issues, :issue_statuses, :changesets, :changes,
25 25 :issue_categories, :enumerations, :custom_fields, :custom_values, :trackers
26 26
27 27 PRJ_ID = 3
28 28 NUM_REV = 11
29 29
30 30 def setup
31 31 Setting.default_language = 'en'
32 32 User.current = nil
33 33
34 34 @project = Project.find(PRJ_ID)
35 35 @repository = Repository::Subversion.create(:project => @project,
36 36 :url => self.class.subversion_repository_url)
37 37 assert @repository
38 38 end
39 39
40 40 if repository_configured?('subversion')
41 41 def test_new
42 42 @request.session[:user_id] = 1
43 43 @project.repository.destroy
44 44 get :new, :project_id => 'subproject1', :repository_scm => 'Subversion'
45 45 assert_response :success
46 46 assert_template 'new'
47 47 assert_kind_of Repository::Subversion, assigns(:repository)
48 48 assert assigns(:repository).new_record?
49 49 end
50 50
51 51 def test_show
52 52 assert_equal 0, @repository.changesets.count
53 53 @repository.fetch_changesets
54 54 @project.reload
55 55 assert_equal NUM_REV, @repository.changesets.count
56 56 get :show, :id => PRJ_ID
57 57 assert_response :success
58 58 assert_template 'show'
59 59 assert_not_nil assigns(:entries)
60 60 assert_not_nil assigns(:changesets)
61 61
62 62 entry = assigns(:entries).detect {|e| e.name == 'subversion_test'}
63 63 assert_not_nil entry
64 64 assert_equal 'dir', entry.kind
65 65
66 66 assert_tag 'input', :attributes => {:name => 'rev'}
67 67 assert_tag 'a', :content => 'Statistics'
68 68 assert_tag 'a', :content => 'Atom'
69 69 end
70 70
71 71 def test_browse_directory
72 72 assert_equal 0, @repository.changesets.count
73 73 @repository.fetch_changesets
74 74 @project.reload
75 75 assert_equal NUM_REV, @repository.changesets.count
76 76 get :show, :id => PRJ_ID, :path => repository_path_hash(['subversion_test'])[:param]
77 77 assert_response :success
78 78 assert_template 'show'
79 79 assert_not_nil assigns(:entries)
80 80 assert_equal [
81 81 '[folder_with_brackets]', 'folder', '.project',
82 82 'helloworld.c', 'textfile.txt'
83 83 ],
84 84 assigns(:entries).collect(&:name)
85 85 entry = assigns(:entries).detect {|e| e.name == 'helloworld.c'}
86 86 assert_equal 'file', entry.kind
87 87 assert_equal 'subversion_test/helloworld.c', entry.path
88 88 assert_tag :a, :content => 'helloworld.c', :attributes => { :class => /text\-x\-c/ }
89 89 end
90 90
91 91 def test_browse_at_given_revision
92 92 assert_equal 0, @repository.changesets.count
93 93 @repository.fetch_changesets
94 94 @project.reload
95 95 assert_equal NUM_REV, @repository.changesets.count
96 96 get :show, :id => PRJ_ID, :path => repository_path_hash(['subversion_test'])[:param],
97 97 :rev => 4
98 98 assert_response :success
99 99 assert_template 'show'
100 100 assert_not_nil assigns(:entries)
101 101 assert_equal ['folder', '.project', 'helloworld.c', 'helloworld.rb', 'textfile.txt'],
102 102 assigns(:entries).collect(&:name)
103 103 end
104 104
105 105 def test_file_changes
106 106 assert_equal 0, @repository.changesets.count
107 107 @repository.fetch_changesets
108 108 @project.reload
109 109 assert_equal NUM_REV, @repository.changesets.count
110 110 get :changes, :id => PRJ_ID,
111 111 :path => repository_path_hash(['subversion_test', 'folder', 'helloworld.rb'])[:param]
112 112 assert_response :success
113 113 assert_template 'changes'
114 114
115 115 changesets = assigns(:changesets)
116 116 assert_not_nil changesets
117 117 assert_equal %w(6 3 2), changesets.collect(&:revision)
118 118
119 119 # svn properties displayed with svn >= 1.5 only
120 120 if Redmine::Scm::Adapters::SubversionAdapter.client_version_above?([1, 5, 0])
121 121 assert_not_nil assigns(:properties)
122 122 assert_equal 'native', assigns(:properties)['svn:eol-style']
123 123 assert_tag :ul,
124 124 :child => { :tag => 'li',
125 125 :child => { :tag => 'b', :content => 'svn:eol-style' },
126 126 :child => { :tag => 'span', :content => 'native' } }
127 127 end
128 128 end
129 129
130 130 def test_directory_changes
131 131 assert_equal 0, @repository.changesets.count
132 132 @repository.fetch_changesets
133 133 @project.reload
134 134 assert_equal NUM_REV, @repository.changesets.count
135 135 get :changes, :id => PRJ_ID,
136 136 :path => repository_path_hash(['subversion_test', 'folder'])[:param]
137 137 assert_response :success
138 138 assert_template 'changes'
139 139
140 140 changesets = assigns(:changesets)
141 141 assert_not_nil changesets
142 142 assert_equal %w(10 9 7 6 5 2), changesets.collect(&:revision)
143 143 end
144 144
145 145 def test_entry
146 146 assert_equal 0, @repository.changesets.count
147 147 @repository.fetch_changesets
148 148 @project.reload
149 149 assert_equal NUM_REV, @repository.changesets.count
150 150 get :entry, :id => PRJ_ID,
151 151 :path => repository_path_hash(['subversion_test', 'helloworld.c'])[:param]
152 152 assert_response :success
153 153 assert_template 'entry'
154 154 end
155 155
156 156 def test_entry_should_send_if_too_big
157 157 assert_equal 0, @repository.changesets.count
158 158 @repository.fetch_changesets
159 159 @project.reload
160 160 assert_equal NUM_REV, @repository.changesets.count
161 161 # no files in the test repo is larger than 1KB...
162 162 with_settings :file_max_size_displayed => 0 do
163 163 get :entry, :id => PRJ_ID,
164 164 :path => repository_path_hash(['subversion_test', 'helloworld.c'])[:param]
165 165 assert_response :success
166 assert_template ''
167 166 assert_equal 'attachment; filename="helloworld.c"',
168 167 @response.headers['Content-Disposition']
169 168 end
170 169 end
171 170
172 171 def test_entry_at_given_revision
173 172 assert_equal 0, @repository.changesets.count
174 173 @repository.fetch_changesets
175 174 @project.reload
176 175 assert_equal NUM_REV, @repository.changesets.count
177 176 get :entry, :id => PRJ_ID,
178 177 :path => repository_path_hash(['subversion_test', 'helloworld.rb'])[:param],
179 178 :rev => 2
180 179 assert_response :success
181 180 assert_template 'entry'
182 181 # this line was removed in r3 and file was moved in r6
183 182 assert_tag :tag => 'td', :attributes => { :class => /line-code/},
184 183 :content => /Here's the code/
185 184 end
186 185
187 186 def test_entry_not_found
188 187 assert_equal 0, @repository.changesets.count
189 188 @repository.fetch_changesets
190 189 @project.reload
191 190 assert_equal NUM_REV, @repository.changesets.count
192 191 get :entry, :id => PRJ_ID,
193 192 :path => repository_path_hash(['subversion_test', 'zzz.c'])[:param]
194 193 assert_tag :tag => 'p', :attributes => { :id => /errorExplanation/ },
195 194 :content => /The entry or revision was not found in the repository/
196 195 end
197 196
198 197 def test_entry_download
199 198 assert_equal 0, @repository.changesets.count
200 199 @repository.fetch_changesets
201 200 @project.reload
202 201 assert_equal NUM_REV, @repository.changesets.count
203 202 get :entry, :id => PRJ_ID,
204 203 :path => repository_path_hash(['subversion_test', 'helloworld.c'])[:param],
205 204 :format => 'raw'
206 205 assert_response :success
207 assert_template ''
208 206 assert_equal 'attachment; filename="helloworld.c"', @response.headers['Content-Disposition']
209 207 end
210 208
211 209 def test_directory_entry
212 210 assert_equal 0, @repository.changesets.count
213 211 @repository.fetch_changesets
214 212 @project.reload
215 213 assert_equal NUM_REV, @repository.changesets.count
216 214 get :entry, :id => PRJ_ID,
217 215 :path => repository_path_hash(['subversion_test', 'folder'])[:param]
218 216 assert_response :success
219 217 assert_template 'show'
220 218 assert_not_nil assigns(:entry)
221 219 assert_equal 'folder', assigns(:entry).name
222 220 end
223 221
224 222 # TODO: this test needs fixtures.
225 223 def test_revision
226 224 get :revision, :id => 1, :rev => 2
227 225 assert_response :success
228 226 assert_template 'revision'
229 227 assert_tag :tag => 'ul',
230 228 :child => { :tag => 'li',
231 229 # link to the entry at rev 2
232 230 :child => { :tag => 'a',
233 231 :attributes => {:href => '/projects/ecookbook/repository/revisions/2/entry/test/some/path/in/the/repo'},
234 232 :content => 'repo',
235 233 # link to partial diff
236 234 :sibling => { :tag => 'a',
237 235 :attributes => { :href => '/projects/ecookbook/repository/revisions/2/diff/test/some/path/in/the/repo' }
238 236 }
239 237 }
240 238 }
241 239 end
242 240
243 241 def test_invalid_revision
244 242 assert_equal 0, @repository.changesets.count
245 243 @repository.fetch_changesets
246 244 @project.reload
247 245 assert_equal NUM_REV, @repository.changesets.count
248 246 get :revision, :id => PRJ_ID, :rev => 'something_weird'
249 247 assert_response 404
250 248 assert_error_tag :content => /was not found/
251 249 end
252 250
253 251 def test_invalid_revision_diff
254 252 get :diff, :id => PRJ_ID, :rev => '1', :rev_to => 'something_weird'
255 253 assert_response 404
256 254 assert_error_tag :content => /was not found/
257 255 end
258 256
259 257 def test_empty_revision
260 258 assert_equal 0, @repository.changesets.count
261 259 @repository.fetch_changesets
262 260 @project.reload
263 261 assert_equal NUM_REV, @repository.changesets.count
264 262 ['', ' ', nil].each do |r|
265 263 get :revision, :id => PRJ_ID, :rev => r
266 264 assert_response 404
267 265 assert_error_tag :content => /was not found/
268 266 end
269 267 end
270 268
271 269 # TODO: this test needs fixtures.
272 270 def test_revision_with_repository_pointing_to_a_subdirectory
273 271 r = Project.find(1).repository
274 272 # Changes repository url to a subdirectory
275 273 r.update_attribute :url, (r.url + '/test/some')
276 274
277 275 get :revision, :id => 1, :rev => 2
278 276 assert_response :success
279 277 assert_template 'revision'
280 278 assert_tag :tag => 'ul',
281 279 :child => { :tag => 'li',
282 280 # link to the entry at rev 2
283 281 :child => { :tag => 'a',
284 282 :attributes => {:href => '/projects/ecookbook/repository/revisions/2/entry/path/in/the/repo'},
285 283 :content => 'repo',
286 284 # link to partial diff
287 285 :sibling => { :tag => 'a',
288 286 :attributes => { :href => '/projects/ecookbook/repository/revisions/2/diff/path/in/the/repo' }
289 287 }
290 288 }
291 289 }
292 290 end
293 291
294 292 def test_revision_diff
295 293 assert_equal 0, @repository.changesets.count
296 294 @repository.fetch_changesets
297 295 @project.reload
298 296 assert_equal NUM_REV, @repository.changesets.count
299 297 ['inline', 'sbs'].each do |dt|
300 298 get :diff, :id => PRJ_ID, :rev => 3, :type => dt
301 299 assert_response :success
302 300 assert_template 'diff'
303 301 assert_tag :tag => 'h2',
304 302 :content => / 3/
305 303 end
306 304 end
307 305
308 306 def test_revision_diff_raw_format
309 307 assert_equal 0, @repository.changesets.count
310 308 @repository.fetch_changesets
311 309 @project.reload
312 310 assert_equal NUM_REV, @repository.changesets.count
313 311
314 312 get :diff, :id => PRJ_ID, :rev => 3, :format => 'diff'
315 313 assert_response :success
316 314 assert_equal 'text/x-patch', @response.content_type
317 315 assert_equal 'Index: subversion_test/textfile.txt', @response.body.split(/\r?\n/).first
318 316 end
319 317
320 318 def test_directory_diff
321 319 assert_equal 0, @repository.changesets.count
322 320 @repository.fetch_changesets
323 321 @project.reload
324 322 assert_equal NUM_REV, @repository.changesets.count
325 323 ['inline', 'sbs'].each do |dt|
326 324 get :diff, :id => PRJ_ID, :rev => 6, :rev_to => 2,
327 325 :path => repository_path_hash(['subversion_test', 'folder'])[:param],
328 326 :type => dt
329 327 assert_response :success
330 328 assert_template 'diff'
331 329
332 330 diff = assigns(:diff)
333 331 assert_not_nil diff
334 332 # 2 files modified
335 333 assert_equal 2, Redmine::UnifiedDiff.new(diff).size
336 334 assert_tag :tag => 'h2', :content => /2:6/
337 335 end
338 336 end
339 337
340 338 def test_annotate
341 339 assert_equal 0, @repository.changesets.count
342 340 @repository.fetch_changesets
343 341 @project.reload
344 342 assert_equal NUM_REV, @repository.changesets.count
345 343 get :annotate, :id => PRJ_ID,
346 344 :path => repository_path_hash(['subversion_test', 'helloworld.c'])[:param]
347 345 assert_response :success
348 346 assert_template 'annotate'
349 347 end
350 348
351 349 def test_annotate_at_given_revision
352 350 assert_equal 0, @repository.changesets.count
353 351 @repository.fetch_changesets
354 352 @project.reload
355 353 assert_equal NUM_REV, @repository.changesets.count
356 354 get :annotate, :id => PRJ_ID, :rev => 8,
357 355 :path => repository_path_hash(['subversion_test', 'helloworld.c'])[:param]
358 356 assert_response :success
359 357 assert_template 'annotate'
360 358 assert_tag :tag => 'h2', :content => /@ 8/
361 359 end
362 360
363 361 def test_destroy_valid_repository
364 362 @request.session[:user_id] = 1 # admin
365 363 assert_equal 0, @repository.changesets.count
366 364 @repository.fetch_changesets
367 365 assert_equal NUM_REV, @repository.changesets.count
368 366
369 367 assert_difference 'Repository.count', -1 do
370 368 delete :destroy, :id => @repository.id
371 369 end
372 370 assert_response 302
373 371 @project.reload
374 372 assert_nil @project.repository
375 373 end
376 374
377 375 def test_destroy_invalid_repository
378 376 @request.session[:user_id] = 1 # admin
379 377 @project.repository.destroy
380 378 @repository = Repository::Subversion.create!(
381 379 :project => @project,
382 380 :url => "file:///invalid")
383 381 @repository.fetch_changesets
384 382 assert_equal 0, @repository.changesets.count
385 383
386 384 assert_difference 'Repository.count', -1 do
387 385 delete :destroy, :id => @repository.id
388 386 end
389 387 assert_response 302
390 388 @project.reload
391 389 assert_nil @project.repository
392 390 end
393 391 else
394 392 puts "Subversion test repository NOT FOUND. Skipping functional tests !!!"
395 393 def test_fake; assert true end
396 394 end
397 395 end
General Comments 0
You need to be logged in to leave comments. Login now