##// END OF EJS Templates
scm: bazaar: add functional test of destroying valid repository (#6713, #4725)....
Toshi MARUYAMA -
r6115:67cbda91ed0c
parent child
Show More
@@ -1,153 +1,165
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
150 def test_destroy_valid_repository
151 @request.session[:user_id] = 1 # admin
152 @repository.fetch_changesets
153 @repository.reload
154 assert @repository.changesets.count > 0
155
156 get :destroy, :id => PRJ_ID
157 assert_response 302
158 @project.reload
159 assert_nil @project.repository
160 end
149 else
161 else
150 puts "Bazaar test repository NOT FOUND. Skipping functional tests !!!"
162 puts "Bazaar test repository NOT FOUND. Skipping functional tests !!!"
151 def test_fake; assert true end
163 def test_fake; assert true end
152 end
164 end
153 end
165 end
General Comments 0
You need to be logged in to leave comments. Login now