##// END OF EJS Templates
Rails3: scm: bazaar: fix error of test_destroy_invalid_repository at functional test...
Toshi MARUYAMA -
r7003:c2cdfca0ed5e
parent child
Show More
@@ -1,192 +1,193
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 RepositoriesBazaarControllerTest < ActionController::TestCase
24 class RepositoriesBazaarControllerTest < 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/bazaar_repository/trunk').to_s
28 REPOSITORY_PATH = Rails.root.join('tmp/test/bazaar_repository/trunk').to_s
29 PRJ_ID = 3
29 PRJ_ID = 3
30
30
31 def setup
31 def setup
32 @controller = RepositoriesController.new
32 @controller = RepositoriesController.new
33 @request = ActionController::TestRequest.new
33 @request = ActionController::TestRequest.new
34 @response = ActionController::TestResponse.new
34 @response = ActionController::TestResponse.new
35 User.current = nil
35 User.current = nil
36 @project = Project.find(PRJ_ID)
36 @project = Project.find(PRJ_ID)
37 @repository = Repository::Bazaar.create(
37 @repository = Repository::Bazaar.create(
38 :project => @project,
38 :project => @project,
39 :url => REPOSITORY_PATH,
39 :url => REPOSITORY_PATH,
40 :log_encoding => 'UTF-8')
40 :log_encoding => 'UTF-8')
41 assert @repository
41 assert @repository
42 end
42 end
43
43
44 if File.directory?(REPOSITORY_PATH)
44 if File.directory?(REPOSITORY_PATH)
45 def test_browse_root
45 def test_browse_root
46 get :show, :id => PRJ_ID
46 get :show, :id => PRJ_ID
47 assert_response :success
47 assert_response :success
48 assert_template 'show'
48 assert_template 'show'
49 assert_not_nil assigns(:entries)
49 assert_not_nil assigns(:entries)
50 assert_equal 2, assigns(:entries).size
50 assert_equal 2, assigns(:entries).size
51 assert assigns(:entries).detect {|e| e.name == 'directory' && e.kind == 'dir'}
51 assert assigns(:entries).detect {|e| e.name == 'directory' && e.kind == 'dir'}
52 assert assigns(:entries).detect {|e| e.name == 'doc-mkdir.txt' && e.kind == 'file'}
52 assert assigns(:entries).detect {|e| e.name == 'doc-mkdir.txt' && e.kind == 'file'}
53 end
53 end
54
54
55 def test_browse_directory
55 def test_browse_directory
56 get :show, :id => PRJ_ID, :path => ['directory']
56 get :show, :id => PRJ_ID, :path => ['directory']
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 ['doc-ls.txt', 'document.txt', 'edit.png'], assigns(:entries).collect(&:name)
60 assert_equal ['doc-ls.txt', 'document.txt', 'edit.png'], assigns(:entries).collect(&:name)
61 entry = assigns(:entries).detect {|e| e.name == 'edit.png'}
61 entry = assigns(:entries).detect {|e| e.name == 'edit.png'}
62 assert_not_nil entry
62 assert_not_nil entry
63 assert_equal 'file', entry.kind
63 assert_equal 'file', entry.kind
64 assert_equal 'directory/edit.png', entry.path
64 assert_equal 'directory/edit.png', entry.path
65 end
65 end
66
66
67 def test_browse_at_given_revision
67 def test_browse_at_given_revision
68 get :show, :id => PRJ_ID, :path => [], :rev => 3
68 get :show, :id => PRJ_ID, :path => [], :rev => 3
69 assert_response :success
69 assert_response :success
70 assert_template 'show'
70 assert_template 'show'
71 assert_not_nil assigns(:entries)
71 assert_not_nil assigns(:entries)
72 assert_equal ['directory', 'doc-deleted.txt', 'doc-ls.txt', 'doc-mkdir.txt'],
72 assert_equal ['directory', 'doc-deleted.txt', 'doc-ls.txt', 'doc-mkdir.txt'],
73 assigns(:entries).collect(&:name)
73 assigns(:entries).collect(&:name)
74 end
74 end
75
75
76 def test_changes
76 def test_changes
77 get :changes, :id => PRJ_ID, :path => ['doc-mkdir.txt']
77 get :changes, :id => PRJ_ID, :path => ['doc-mkdir.txt']
78 assert_response :success
78 assert_response :success
79 assert_template 'changes'
79 assert_template 'changes'
80 assert_tag :tag => 'h2', :content => 'doc-mkdir.txt'
80 assert_tag :tag => 'h2', :content => 'doc-mkdir.txt'
81 end
81 end
82
82
83 def test_entry_show
83 def test_entry_show
84 get :entry, :id => PRJ_ID, :path => ['directory', 'doc-ls.txt']
84 get :entry, :id => PRJ_ID, :path => ['directory', 'doc-ls.txt']
85 assert_response :success
85 assert_response :success
86 assert_template 'entry'
86 assert_template 'entry'
87 # Line 19
87 # Line 19
88 assert_tag :tag => 'th',
88 assert_tag :tag => 'th',
89 :content => /29/,
89 :content => /29/,
90 :attributes => { :class => /line-num/ },
90 :attributes => { :class => /line-num/ },
91 :sibling => { :tag => 'td', :content => /Show help message/ }
91 :sibling => { :tag => 'td', :content => /Show help message/ }
92 end
92 end
93
93
94 def test_entry_download
94 def test_entry_download
95 get :entry, :id => PRJ_ID, :path => ['directory', 'doc-ls.txt'], :format => 'raw'
95 get :entry, :id => PRJ_ID, :path => ['directory', 'doc-ls.txt'], :format => 'raw'
96 assert_response :success
96 assert_response :success
97 # File content
97 # File content
98 assert @response.body.include?('Show help message')
98 assert @response.body.include?('Show help message')
99 end
99 end
100
100
101 def test_directory_entry
101 def test_directory_entry
102 get :entry, :id => PRJ_ID, :path => ['directory']
102 get :entry, :id => PRJ_ID, :path => ['directory']
103 assert_response :success
103 assert_response :success
104 assert_template 'show'
104 assert_template 'show'
105 assert_not_nil assigns(:entry)
105 assert_not_nil assigns(:entry)
106 assert_equal 'directory', assigns(:entry).name
106 assert_equal 'directory', assigns(:entry).name
107 end
107 end
108
108
109 def test_diff
109 def test_diff
110 # Full diff of changeset 3
110 # Full diff of changeset 3
111 ['inline', 'sbs'].each do |dt|
111 ['inline', 'sbs'].each do |dt|
112 get :diff, :id => PRJ_ID, :rev => 3, :type => dt
112 get :diff, :id => PRJ_ID, :rev => 3, :type => dt
113 assert_response :success
113 assert_response :success
114 assert_template 'diff'
114 assert_template 'diff'
115 # Line 11 removed
115 # Line 11 removed
116 assert_tag :tag => 'th',
116 assert_tag :tag => 'th',
117 :content => '11',
117 :content => '11',
118 :sibling => { :tag => 'td',
118 :sibling => { :tag => 'td',
119 :attributes => { :class => /diff_out/ },
119 :attributes => { :class => /diff_out/ },
120 :content => /Display more information/ }
120 :content => /Display more information/ }
121 end
121 end
122 end
122 end
123
123
124 def test_annotate
124 def test_annotate
125 get :annotate, :id => PRJ_ID, :path => ['doc-mkdir.txt']
125 get :annotate, :id => PRJ_ID, :path => ['doc-mkdir.txt']
126 assert_response :success
126 assert_response :success
127 assert_template 'annotate'
127 assert_template 'annotate'
128 assert_tag :tag => 'th', :content => '2',
128 assert_tag :tag => 'th', :content => '2',
129 :sibling => {
129 :sibling => {
130 :tag => 'td',
130 :tag => 'td',
131 :child => {
131 :child => {
132 :tag => 'a',
132 :tag => 'a',
133 :content => '3'
133 :content => '3'
134 }
134 }
135 }
135 }
136 assert_tag :tag => 'th', :content => '2',
136 assert_tag :tag => 'th', :content => '2',
137 :sibling => { :tag => 'td', :content => /jsmith/ }
137 :sibling => { :tag => 'td', :content => /jsmith/ }
138 assert_tag :tag => 'th', :content => '2',
138 assert_tag :tag => 'th', :content => '2',
139 :sibling => {
139 :sibling => {
140 :tag => 'td',
140 :tag => 'td',
141 :child => {
141 :child => {
142 :tag => 'a',
142 :tag => 'a',
143 :content => '3'
143 :content => '3'
144 }
144 }
145 }
145 }
146 assert_tag :tag => 'th', :content => '2',
146 assert_tag :tag => 'th', :content => '2',
147 :sibling => { :tag => 'td', :content => /Main purpose/ }
147 :sibling => { :tag => 'td', :content => /Main purpose/ }
148 end
148 end
149
149
150 def test_destroy_valid_repository
150 def test_destroy_valid_repository
151 @request.session[:user_id] = 1 # admin
151 @request.session[:user_id] = 1 # admin
152 assert_equal 0, @repository.changesets.count
152 assert_equal 0, @repository.changesets.count
153 @repository.fetch_changesets
153 @repository.fetch_changesets
154 @project.reload
154 @project.reload
155 assert @repository.changesets.count > 0
155 assert @repository.changesets.count > 0
156
156
157 get :destroy, :id => PRJ_ID
157 get :destroy, :id => PRJ_ID
158 assert_response 302
158 assert_response 302
159 @project.reload
159 @project.reload
160 assert_nil @project.repository
160 assert_nil @project.repository
161 end
161 end
162
162
163 def test_destroy_invalid_repository
163 def test_destroy_invalid_repository
164 @request.session[:user_id] = 1 # admin
164 @request.session[:user_id] = 1 # admin
165 assert_equal 0, @repository.changesets.count
165 @repository.fetch_changesets
166 @repository.fetch_changesets
166 @repository.reload
167 @project.reload
167 assert @repository.changesets.count > 0
168 assert @repository.changesets.count > 0
168
169
169 get :destroy, :id => PRJ_ID
170 get :destroy, :id => PRJ_ID
170 assert_response 302
171 assert_response 302
171 @project.reload
172 @project.reload
172 assert_nil @project.repository
173 assert_nil @project.repository
173
174
174 @repository = Repository::Bazaar.create(
175 @repository = Repository::Bazaar.create(
175 :project => @project,
176 :project => @project,
176 :url => "/invalid",
177 :url => "/invalid",
177 :log_encoding => 'UTF-8')
178 :log_encoding => 'UTF-8')
178 assert @repository
179 assert @repository
179 @repository.fetch_changesets
180 @repository.fetch_changesets
180 @repository.reload
181 @repository.reload
181 assert_equal 0, @repository.changesets.count
182 assert_equal 0, @repository.changesets.count
182
183
183 get :destroy, :id => PRJ_ID
184 get :destroy, :id => PRJ_ID
184 assert_response 302
185 assert_response 302
185 @project.reload
186 @project.reload
186 assert_nil @project.repository
187 assert_nil @project.repository
187 end
188 end
188 else
189 else
189 puts "Bazaar test repository NOT FOUND. Skipping functional tests !!!"
190 puts "Bazaar test repository NOT FOUND. Skipping functional tests !!!"
190 def test_fake; assert true end
191 def test_fake; assert true end
191 end
192 end
192 end
193 end
General Comments 0
You need to be logged in to leave comments. Login now