##// END OF EJS Templates
Rails3: scm: darcs: fix error of test_browse_directory at functional test...
Toshi MARUYAMA -
r7036:bb53890dbb14
parent child
Show More
@@ -1,154 +1,156
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 RepositoriesDarcsControllerTest < ActionController::TestCase
24 class RepositoriesDarcsControllerTest < 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/darcs_repository').to_s
28 REPOSITORY_PATH = Rails.root.join('tmp/test/darcs_repository').to_s
29 PRJ_ID = 3
29 PRJ_ID = 3
30 NUM_REV = 6
30 NUM_REV = 6
31
31
32 def setup
32 def setup
33 @controller = RepositoriesController.new
33 @controller = RepositoriesController.new
34 @request = ActionController::TestRequest.new
34 @request = ActionController::TestRequest.new
35 @response = ActionController::TestResponse.new
35 @response = ActionController::TestResponse.new
36 User.current = nil
36 User.current = nil
37 @project = Project.find(PRJ_ID)
37 @project = Project.find(PRJ_ID)
38 @repository = Repository::Darcs.create(
38 @repository = Repository::Darcs.create(
39 :project => @project,
39 :project => @project,
40 :url => REPOSITORY_PATH,
40 :url => REPOSITORY_PATH,
41 :log_encoding => 'UTF-8'
41 :log_encoding => 'UTF-8'
42 )
42 )
43 assert @repository
43 assert @repository
44 end
44 end
45
45
46 if File.directory?(REPOSITORY_PATH)
46 if File.directory?(REPOSITORY_PATH)
47 def test_browse_root
47 def test_browse_root
48 assert_equal 0, @repository.changesets.count
48 assert_equal 0, @repository.changesets.count
49 @repository.fetch_changesets
49 @repository.fetch_changesets
50 @project.reload
50 @project.reload
51 assert_equal NUM_REV, @repository.changesets.count
51 assert_equal NUM_REV, @repository.changesets.count
52 get :show, :id => PRJ_ID
52 get :show, :id => PRJ_ID
53 assert_response :success
53 assert_response :success
54 assert_template 'show'
54 assert_template 'show'
55 assert_not_nil assigns(:entries)
55 assert_not_nil assigns(:entries)
56 assert_equal 3, assigns(:entries).size
56 assert_equal 3, assigns(:entries).size
57 assert assigns(:entries).detect {|e| e.name == 'images' && e.kind == 'dir'}
57 assert assigns(:entries).detect {|e| e.name == 'images' && e.kind == 'dir'}
58 assert assigns(:entries).detect {|e| e.name == 'sources' && e.kind == 'dir'}
58 assert assigns(:entries).detect {|e| e.name == 'sources' && e.kind == 'dir'}
59 assert assigns(:entries).detect {|e| e.name == 'README' && e.kind == 'file'}
59 assert assigns(:entries).detect {|e| e.name == 'README' && e.kind == 'file'}
60 end
60 end
61
61
62 def test_browse_directory
62 def test_browse_directory
63 assert_equal 0, @repository.changesets.count
63 @repository.fetch_changesets
64 @repository.fetch_changesets
64 @repository.reload
65 @project.reload
66 assert_equal NUM_REV, @repository.changesets.count
65 get :show, :id => PRJ_ID, :path => ['images']
67 get :show, :id => PRJ_ID, :path => ['images']
66 assert_response :success
68 assert_response :success
67 assert_template 'show'
69 assert_template 'show'
68 assert_not_nil assigns(:entries)
70 assert_not_nil assigns(:entries)
69 assert_equal ['delete.png', 'edit.png'], assigns(:entries).collect(&:name)
71 assert_equal ['delete.png', 'edit.png'], assigns(:entries).collect(&:name)
70 entry = assigns(:entries).detect {|e| e.name == 'edit.png'}
72 entry = assigns(:entries).detect {|e| e.name == 'edit.png'}
71 assert_not_nil entry
73 assert_not_nil entry
72 assert_equal 'file', entry.kind
74 assert_equal 'file', entry.kind
73 assert_equal 'images/edit.png', entry.path
75 assert_equal 'images/edit.png', entry.path
74 end
76 end
75
77
76 def test_browse_at_given_revision
78 def test_browse_at_given_revision
77 @repository.fetch_changesets
79 @repository.fetch_changesets
78 @repository.reload
80 @repository.reload
79 get :show, :id => PRJ_ID, :path => ['images'], :rev => 1
81 get :show, :id => PRJ_ID, :path => ['images'], :rev => 1
80 assert_response :success
82 assert_response :success
81 assert_template 'show'
83 assert_template 'show'
82 assert_not_nil assigns(:entries)
84 assert_not_nil assigns(:entries)
83 assert_equal ['delete.png'], assigns(:entries).collect(&:name)
85 assert_equal ['delete.png'], assigns(:entries).collect(&:name)
84 end
86 end
85
87
86 def test_changes
88 def test_changes
87 @repository.fetch_changesets
89 @repository.fetch_changesets
88 @repository.reload
90 @repository.reload
89 get :changes, :id => PRJ_ID, :path => ['images', 'edit.png']
91 get :changes, :id => PRJ_ID, :path => ['images', 'edit.png']
90 assert_response :success
92 assert_response :success
91 assert_template 'changes'
93 assert_template 'changes'
92 assert_tag :tag => 'h2', :content => 'edit.png'
94 assert_tag :tag => 'h2', :content => 'edit.png'
93 end
95 end
94
96
95 def test_diff
97 def test_diff
96 @repository.fetch_changesets
98 @repository.fetch_changesets
97 @repository.reload
99 @repository.reload
98 # Full diff of changeset 5
100 # Full diff of changeset 5
99 ['inline', 'sbs'].each do |dt|
101 ['inline', 'sbs'].each do |dt|
100 get :diff, :id => PRJ_ID, :rev => 5, :type => dt
102 get :diff, :id => PRJ_ID, :rev => 5, :type => dt
101 assert_response :success
103 assert_response :success
102 assert_template 'diff'
104 assert_template 'diff'
103 # Line 22 removed
105 # Line 22 removed
104 assert_tag :tag => 'th',
106 assert_tag :tag => 'th',
105 :content => '22',
107 :content => '22',
106 :sibling => { :tag => 'td',
108 :sibling => { :tag => 'td',
107 :attributes => { :class => /diff_out/ },
109 :attributes => { :class => /diff_out/ },
108 :content => /def remove/ }
110 :content => /def remove/ }
109 end
111 end
110 end
112 end
111
113
112 def test_destroy_valid_repository
114 def test_destroy_valid_repository
113 @request.session[:user_id] = 1 # admin
115 @request.session[:user_id] = 1 # admin
114 @repository.fetch_changesets
116 @repository.fetch_changesets
115 @repository.reload
117 @repository.reload
116 assert @repository.changesets.count > 0
118 assert @repository.changesets.count > 0
117
119
118 get :destroy, :id => PRJ_ID
120 get :destroy, :id => PRJ_ID
119 assert_response 302
121 assert_response 302
120 @project.reload
122 @project.reload
121 assert_nil @project.repository
123 assert_nil @project.repository
122 end
124 end
123
125
124 def test_destroy_invalid_repository
126 def test_destroy_invalid_repository
125 @request.session[:user_id] = 1 # admin
127 @request.session[:user_id] = 1 # admin
126 @repository.fetch_changesets
128 @repository.fetch_changesets
127 @repository.reload
129 @repository.reload
128 assert @repository.changesets.count > 0
130 assert @repository.changesets.count > 0
129
131
130 get :destroy, :id => PRJ_ID
132 get :destroy, :id => PRJ_ID
131 assert_response 302
133 assert_response 302
132 @project.reload
134 @project.reload
133 assert_nil @project.repository
135 assert_nil @project.repository
134
136
135 @repository = Repository::Darcs.create(
137 @repository = Repository::Darcs.create(
136 :project => @project,
138 :project => @project,
137 :url => "/invalid",
139 :url => "/invalid",
138 :log_encoding => 'UTF-8'
140 :log_encoding => 'UTF-8'
139 )
141 )
140 assert @repository
142 assert @repository
141 @repository.fetch_changesets
143 @repository.fetch_changesets
142 @repository.reload
144 @repository.reload
143 assert_equal 0, @repository.changesets.count
145 assert_equal 0, @repository.changesets.count
144
146
145 get :destroy, :id => PRJ_ID
147 get :destroy, :id => PRJ_ID
146 assert_response 302
148 assert_response 302
147 @project.reload
149 @project.reload
148 assert_nil @project.repository
150 assert_nil @project.repository
149 end
151 end
150 else
152 else
151 puts "Darcs test repository NOT FOUND. Skipping functional tests !!!"
153 puts "Darcs test repository NOT FOUND. Skipping functional tests !!!"
152 def test_fake; assert true end
154 def test_fake; assert true end
153 end
155 end
154 end
156 end
General Comments 0
You need to be logged in to leave comments. Login now