##// END OF EJS Templates
scm: cvs: code clean up test_entry_download at functional test...
Toshi MARUYAMA -
r7049:38374b953601
parent child
Show More
@@ -1,259 +1,260
1 # Redmine - project management software
1 # Redmine - project management software
2 # Copyright (C) 2006-2011 Jean-Philippe Lang
2 # Copyright (C) 2006-2011 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 require 'repositories_controller'
19 require 'repositories_controller'
20
20
21 # Re-raise errors caught by the controller.
21 # Re-raise errors caught by the controller.
22 class RepositoriesController; def rescue_action(e) raise e end; end
22 class RepositoriesController; def rescue_action(e) raise e end; end
23
23
24 class RepositoriesCvsControllerTest < ActionController::TestCase
24 class RepositoriesCvsControllerTest < ActionController::TestCase
25 fixtures :projects, :users, :roles, :members, :member_roles,
25 fixtures :projects, :users, :roles, :members, :member_roles,
26 :repositories, :enabled_modules
26 :repositories, :enabled_modules
27
27
28 REPOSITORY_PATH = Rails.root.join('tmp/test/cvs_repository').to_s
28 REPOSITORY_PATH = Rails.root.join('tmp/test/cvs_repository').to_s
29 REPOSITORY_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin?
29 REPOSITORY_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin?
30 # CVS module
30 # CVS module
31 MODULE_NAME = 'test'
31 MODULE_NAME = 'test'
32 PRJ_ID = 3
32 PRJ_ID = 3
33 NUM_REV = 7
33 NUM_REV = 7
34
34
35 def setup
35 def setup
36 @controller = RepositoriesController.new
36 @controller = RepositoriesController.new
37 @request = ActionController::TestRequest.new
37 @request = ActionController::TestRequest.new
38 @response = ActionController::TestResponse.new
38 @response = ActionController::TestResponse.new
39 Setting.default_language = 'en'
39 Setting.default_language = 'en'
40 User.current = nil
40 User.current = nil
41
41
42 @project = Project.find(PRJ_ID)
42 @project = Project.find(PRJ_ID)
43 @repository = Repository::Cvs.create(:project => Project.find(PRJ_ID),
43 @repository = Repository::Cvs.create(:project => Project.find(PRJ_ID),
44 :root_url => REPOSITORY_PATH,
44 :root_url => REPOSITORY_PATH,
45 :url => MODULE_NAME,
45 :url => MODULE_NAME,
46 :log_encoding => 'UTF-8')
46 :log_encoding => 'UTF-8')
47 assert @repository
47 assert @repository
48 end
48 end
49
49
50 if File.directory?(REPOSITORY_PATH)
50 if File.directory?(REPOSITORY_PATH)
51 def test_browse_root
51 def test_browse_root
52 assert_equal 0, @repository.changesets.count
52 assert_equal 0, @repository.changesets.count
53 @repository.fetch_changesets
53 @repository.fetch_changesets
54 @project.reload
54 @project.reload
55 assert_equal NUM_REV, @repository.changesets.count
55 assert_equal NUM_REV, @repository.changesets.count
56 get :show, :id => PRJ_ID
56 get :show, :id => PRJ_ID
57 assert_response :success
57 assert_response :success
58 assert_template 'show'
58 assert_template 'show'
59 assert_not_nil assigns(:entries)
59 assert_not_nil assigns(:entries)
60 assert_equal 3, assigns(:entries).size
60 assert_equal 3, assigns(:entries).size
61
61
62 entry = assigns(:entries).detect {|e| e.name == 'images'}
62 entry = assigns(:entries).detect {|e| e.name == 'images'}
63 assert_equal 'dir', entry.kind
63 assert_equal 'dir', entry.kind
64
64
65 entry = assigns(:entries).detect {|e| e.name == 'README'}
65 entry = assigns(:entries).detect {|e| e.name == 'README'}
66 assert_equal 'file', entry.kind
66 assert_equal 'file', entry.kind
67
67
68 assert_not_nil assigns(:changesets)
68 assert_not_nil assigns(:changesets)
69 assert assigns(:changesets).size > 0
69 assert assigns(:changesets).size > 0
70 end
70 end
71
71
72 def test_browse_directory
72 def test_browse_directory
73 @repository.fetch_changesets
73 @repository.fetch_changesets
74 @repository.reload
74 @repository.reload
75 get :show, :id => PRJ_ID, :path => ['images']
75 get :show, :id => PRJ_ID, :path => ['images']
76 assert_response :success
76 assert_response :success
77 assert_template 'show'
77 assert_template 'show'
78 assert_not_nil assigns(:entries)
78 assert_not_nil assigns(:entries)
79 assert_equal ['add.png', 'delete.png', 'edit.png'], assigns(:entries).collect(&:name)
79 assert_equal ['add.png', 'delete.png', 'edit.png'], assigns(:entries).collect(&:name)
80 entry = assigns(:entries).detect {|e| e.name == 'edit.png'}
80 entry = assigns(:entries).detect {|e| e.name == 'edit.png'}
81 assert_not_nil entry
81 assert_not_nil entry
82 assert_equal 'file', entry.kind
82 assert_equal 'file', entry.kind
83 assert_equal 'images/edit.png', entry.path
83 assert_equal 'images/edit.png', entry.path
84 end
84 end
85
85
86 def test_browse_at_given_revision
86 def test_browse_at_given_revision
87 @repository.fetch_changesets
87 @repository.fetch_changesets
88 @repository.reload
88 @repository.reload
89 get :show, :id => PRJ_ID, :path => ['images'], :rev => 1
89 get :show, :id => PRJ_ID, :path => ['images'], :rev => 1
90 assert_response :success
90 assert_response :success
91 assert_template 'show'
91 assert_template 'show'
92 assert_not_nil assigns(:entries)
92 assert_not_nil assigns(:entries)
93 assert_equal ['delete.png', 'edit.png'], assigns(:entries).collect(&:name)
93 assert_equal ['delete.png', 'edit.png'], assigns(:entries).collect(&:name)
94 end
94 end
95
95
96 def test_entry
96 def test_entry
97 @repository.fetch_changesets
97 @repository.fetch_changesets
98 @repository.reload
98 @repository.reload
99 get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb']
99 get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb']
100 assert_response :success
100 assert_response :success
101 assert_template 'entry'
101 assert_template 'entry'
102 assert_no_tag :tag => 'td',
102 assert_no_tag :tag => 'td',
103 :attributes => { :class => /line-code/},
103 :attributes => { :class => /line-code/},
104 :content => /before_filter/
104 :content => /before_filter/
105 end
105 end
106
106
107 def test_entry_at_given_revision
107 def test_entry_at_given_revision
108 # changesets must be loaded
108 # changesets must be loaded
109 @repository.fetch_changesets
109 @repository.fetch_changesets
110 @repository.reload
110 @repository.reload
111 get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'], :rev => 2
111 get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'], :rev => 2
112 assert_response :success
112 assert_response :success
113 assert_template 'entry'
113 assert_template 'entry'
114 # this line was removed in r3
114 # this line was removed in r3
115 assert_tag :tag => 'td',
115 assert_tag :tag => 'td',
116 :attributes => { :class => /line-code/},
116 :attributes => { :class => /line-code/},
117 :content => /before_filter/
117 :content => /before_filter/
118 end
118 end
119
119
120 def test_entry_not_found
120 def test_entry_not_found
121 @repository.fetch_changesets
121 @repository.fetch_changesets
122 @repository.reload
122 @repository.reload
123 get :entry, :id => PRJ_ID, :path => ['sources', 'zzz.c']
123 get :entry, :id => PRJ_ID, :path => ['sources', 'zzz.c']
124 assert_tag :tag => 'p',
124 assert_tag :tag => 'p',
125 :attributes => { :id => /errorExplanation/ },
125 :attributes => { :id => /errorExplanation/ },
126 :content => /The entry or revision was not found in the repository/
126 :content => /The entry or revision was not found in the repository/
127 end
127 end
128
128
129 def test_entry_download
129 def test_entry_download
130 @repository.fetch_changesets
130 @repository.fetch_changesets
131 @repository.reload
131 @repository.reload
132 get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'], :format => 'raw'
132 get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'],
133 :format => 'raw'
133 assert_response :success
134 assert_response :success
134 end
135 end
135
136
136 def test_directory_entry
137 def test_directory_entry
137 @repository.fetch_changesets
138 @repository.fetch_changesets
138 @repository.reload
139 @repository.reload
139 get :entry, :id => PRJ_ID, :path => ['sources']
140 get :entry, :id => PRJ_ID, :path => ['sources']
140 assert_response :success
141 assert_response :success
141 assert_template 'show'
142 assert_template 'show'
142 assert_not_nil assigns(:entry)
143 assert_not_nil assigns(:entry)
143 assert_equal 'sources', assigns(:entry).name
144 assert_equal 'sources', assigns(:entry).name
144 end
145 end
145
146
146 def test_diff
147 def test_diff
147 @repository.fetch_changesets
148 @repository.fetch_changesets
148 @repository.reload
149 @repository.reload
149 ['inline', 'sbs'].each do |dt|
150 ['inline', 'sbs'].each do |dt|
150 get :diff, :id => PRJ_ID, :rev => 3, :type => dt
151 get :diff, :id => PRJ_ID, :rev => 3, :type => dt
151 assert_response :success
152 assert_response :success
152 assert_template 'diff'
153 assert_template 'diff'
153 assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_out' },
154 assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_out' },
154 :content => /before_filter :require_login/
155 :content => /before_filter :require_login/
155 assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_in' },
156 assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_in' },
156 :content => /with one change/
157 :content => /with one change/
157 end
158 end
158 end
159 end
159
160
160 def test_diff_new_files
161 def test_diff_new_files
161 @repository.fetch_changesets
162 @repository.fetch_changesets
162 @repository.reload
163 @repository.reload
163 ['inline', 'sbs'].each do |dt|
164 ['inline', 'sbs'].each do |dt|
164 get :diff, :id => PRJ_ID, :rev => 1, :type => dt
165 get :diff, :id => PRJ_ID, :rev => 1, :type => dt
165 assert_response :success
166 assert_response :success
166 assert_template 'diff'
167 assert_template 'diff'
167 assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_in' },
168 assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_in' },
168 :content => /watched.remove_watcher/
169 :content => /watched.remove_watcher/
169 assert_tag :tag => 'th', :attributes => { :class => 'filename' },
170 assert_tag :tag => 'th', :attributes => { :class => 'filename' },
170 :content => /test\/README/
171 :content => /test\/README/
171 assert_tag :tag => 'th', :attributes => { :class => 'filename' },
172 assert_tag :tag => 'th', :attributes => { :class => 'filename' },
172 :content => /test\/images\/delete.png /
173 :content => /test\/images\/delete.png /
173 assert_tag :tag => 'th', :attributes => { :class => 'filename' },
174 assert_tag :tag => 'th', :attributes => { :class => 'filename' },
174 :content => /test\/images\/edit.png/
175 :content => /test\/images\/edit.png/
175 assert_tag :tag => 'th', :attributes => { :class => 'filename' },
176 assert_tag :tag => 'th', :attributes => { :class => 'filename' },
176 :content => /test\/sources\/watchers_controller.rb/
177 :content => /test\/sources\/watchers_controller.rb/
177 end
178 end
178 end
179 end
179
180
180 def test_annotate
181 def test_annotate
181 @repository.fetch_changesets
182 @repository.fetch_changesets
182 @repository.reload
183 @repository.reload
183 get :annotate, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb']
184 get :annotate, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb']
184 assert_response :success
185 assert_response :success
185 assert_template 'annotate'
186 assert_template 'annotate'
186 # 1.1 line
187 # 1.1 line
187 assert_tag :tag => 'th',
188 assert_tag :tag => 'th',
188 :attributes => { :class => 'line-num' },
189 :attributes => { :class => 'line-num' },
189 :content => '18',
190 :content => '18',
190 :sibling => {
191 :sibling => {
191 :tag => 'td',
192 :tag => 'td',
192 :attributes => { :class => 'revision' },
193 :attributes => { :class => 'revision' },
193 :content => /1.1/,
194 :content => /1.1/,
194 :sibling => {
195 :sibling => {
195 :tag => 'td',
196 :tag => 'td',
196 :attributes => { :class => 'author' },
197 :attributes => { :class => 'author' },
197 :content => /LANG/
198 :content => /LANG/
198 }
199 }
199 }
200 }
200 # 1.2 line
201 # 1.2 line
201 assert_tag :tag => 'th',
202 assert_tag :tag => 'th',
202 :attributes => { :class => 'line-num' },
203 :attributes => { :class => 'line-num' },
203 :content => '32',
204 :content => '32',
204 :sibling => {
205 :sibling => {
205 :tag => 'td',
206 :tag => 'td',
206 :attributes => { :class => 'revision' },
207 :attributes => { :class => 'revision' },
207 :content => /1.2/,
208 :content => /1.2/,
208 :sibling => {
209 :sibling => {
209 :tag => 'td',
210 :tag => 'td',
210 :attributes => { :class => 'author' },
211 :attributes => { :class => 'author' },
211 :content => /LANG/
212 :content => /LANG/
212 }
213 }
213 }
214 }
214 end
215 end
215
216
216 def test_destroy_valid_repository
217 def test_destroy_valid_repository
217 @request.session[:user_id] = 1 # admin
218 @request.session[:user_id] = 1 # admin
218 @repository.fetch_changesets
219 @repository.fetch_changesets
219 @repository.reload
220 @repository.reload
220 assert @repository.changesets.count > 0
221 assert @repository.changesets.count > 0
221
222
222 get :destroy, :id => PRJ_ID
223 get :destroy, :id => PRJ_ID
223 assert_response 302
224 assert_response 302
224 @project.reload
225 @project.reload
225 assert_nil @project.repository
226 assert_nil @project.repository
226 end
227 end
227
228
228 def test_destroy_invalid_repository
229 def test_destroy_invalid_repository
229 @request.session[:user_id] = 1 # admin
230 @request.session[:user_id] = 1 # admin
230 @repository.fetch_changesets
231 @repository.fetch_changesets
231 @repository.reload
232 @repository.reload
232 assert @repository.changesets.count > 0
233 assert @repository.changesets.count > 0
233
234
234 get :destroy, :id => PRJ_ID
235 get :destroy, :id => PRJ_ID
235 assert_response 302
236 assert_response 302
236 @project.reload
237 @project.reload
237 assert_nil @project.repository
238 assert_nil @project.repository
238
239
239 @repository = Repository::Cvs.create(
240 @repository = Repository::Cvs.create(
240 :project => Project.find(PRJ_ID),
241 :project => Project.find(PRJ_ID),
241 :root_url => "/invalid",
242 :root_url => "/invalid",
242 :url => MODULE_NAME,
243 :url => MODULE_NAME,
243 :log_encoding => 'UTF-8'
244 :log_encoding => 'UTF-8'
244 )
245 )
245 assert @repository
246 assert @repository
246 @repository.fetch_changesets
247 @repository.fetch_changesets
247 @repository.reload
248 @repository.reload
248 assert_equal 0, @repository.changesets.count
249 assert_equal 0, @repository.changesets.count
249
250
250 get :destroy, :id => PRJ_ID
251 get :destroy, :id => PRJ_ID
251 assert_response 302
252 assert_response 302
252 @project.reload
253 @project.reload
253 assert_nil @project.repository
254 assert_nil @project.repository
254 end
255 end
255 else
256 else
256 puts "CVS test repository NOT FOUND. Skipping functional tests !!!"
257 puts "CVS test repository NOT FOUND. Skipping functional tests !!!"
257 def test_fake; assert true end
258 def test_fake; assert true end
258 end
259 end
259 end
260 end
General Comments 0
You need to be logged in to leave comments. Login now