##// END OF EJS Templates
Speeds up rendering of the project list for users who belong to hundreds of projects....
Speeds up rendering of the project list for users who belong to hundreds of projects. git-svn-id: http://svn.redmine.org/redmine/trunk@16123 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r15343:00f709ad4d5f
r15741:f8df935dcada
Show More
repositories_filesystem_controller_test.rb
153 lines | 5.4 KiB | text/x-ruby | RubyLexer
/ test / functional / repositories_filesystem_controller_test.rb
Toshi MARUYAMA
scm: filesystem: add functional test....
r5076 # Redmine - project management software
Jean-Philippe Lang
Updates copyright for 2016....
r14856 # Copyright (C) 2006-2016 Jean-Philippe Lang
Toshi MARUYAMA
scm: filesystem: add functional test....
r5076 #
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
Toshi MARUYAMA
scm: filesystem: remove trailing white-spaces from functional test....
r5562 #
Toshi MARUYAMA
scm: filesystem: add functional test....
r5076 # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
Toshi MARUYAMA
scm: filesystem: remove trailing white-spaces from functional test....
r5562 #
Toshi MARUYAMA
scm: filesystem: add functional test....
r5076 # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
require File.expand_path('../../test_helper', __FILE__)
Jean-Philippe Lang
Adds our own class for controller tests....
r15279 class RepositoriesFilesystemControllerTest < Redmine::ControllerTest
Jean-Philippe Lang
Test for repository edit and cleanup....
r7931 tests RepositoriesController
Jean-Philippe Lang
Add support for multiple email addresses per user (#4244)....
r13504 fixtures :projects, :users, :email_addresses, :roles, :members, :member_roles,
Toshi MARUYAMA
scm: filesystem: replace RAILS_ROOT to Rails.root in functional test....
r5935 :repositories, :enabled_modules
Toshi MARUYAMA
scm: filesystem: add functional test....
r5076
Toshi MARUYAMA
scm: filesystem: replace RAILS_ROOT to Rails.root in functional test....
r5935 REPOSITORY_PATH = Rails.root.join('tmp/test/filesystem_repository').to_s
Toshi MARUYAMA
scm: filesystem: add functional test....
r5076 PRJ_ID = 3
def setup
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 @ruby19_non_utf8_pass = Encoding.default_external.to_s != 'UTF-8'
Toshi MARUYAMA
scm: filesystem: add functional test....
r5076 User.current = nil
Setting.enabled_scm << 'Filesystem' unless Setting.enabled_scm.include?('Filesystem')
Toshi MARUYAMA
scm: filesystem: add instance variable @project at functional test....
r6117 @project = Project.find(PRJ_ID)
Toshi MARUYAMA
scm: filesystem: add functional test....
r5076 @repository = Repository::Filesystem.create(
Toshi MARUYAMA
scm: filesystem: add instance variable @project at functional test....
r6117 :project => @project,
Toshi MARUYAMA
scm: filesystem: code clean up functional test....
r5741 :url => REPOSITORY_PATH,
Toshi MARUYAMA
scm: filesystem: add functional test....
r5076 :path_encoding => ''
)
assert @repository
end
if File.directory?(REPOSITORY_PATH)
Jean-Philippe Lang
Resourcified repositories for CRUD operations to prepare for multiple SCM per project (#779)....
r8528 def test_get_new
Jean-Philippe Lang
Test for repository edit and cleanup....
r7931 @request.session[:user_id] = 1
@project.repository.destroy
Jean-Philippe Lang
Resourcified repositories for CRUD operations to prepare for multiple SCM per project (#779)....
r8528 get :new, :project_id => 'subproject1', :repository_scm => 'Filesystem'
Jean-Philippe Lang
Test for repository edit and cleanup....
r7931 assert_response :success
Jean-Philippe Lang
Removes calls to #assert_template and #assigns in functional tests....
r15343 assert_select 'select[name=?]', 'repository_scm' do
assert_select 'option[value=?][selected=selected]', 'Filesystem'
end
Jean-Philippe Lang
Test for repository edit and cleanup....
r7931 end
Toshi MARUYAMA
scm: filesystem: add functional test....
r5076 def test_browse_root
@repository.fetch_changesets
@repository.reload
Toshi MARUYAMA
scm: filesystem: add test of no extension file whose content is only ASCII can be showing (#6256)....
r5078 get :show, :id => PRJ_ID
Toshi MARUYAMA
scm: filesystem: add functional test....
r5076 assert_response :success
Jean-Philippe Lang
Removes calls to #assert_template and #assigns in functional tests....
r15343
assert_select 'table.entries tbody' do
assert_select 'tr', 3
assert_select 'tr.dir td.filename a', :text => 'dir'
assert_select 'tr.dir td.filename a', :text => 'japanese'
assert_select 'tr.file td.filename a', :text => 'test'
end
assert_select 'table.changesets tbody', 0
Jean-Philippe Lang
Do not show revisions links and field on filesystem repositories....
r8545
Jean-Philippe Lang
Replaced remaining #assert_tag with #assert_select....
r13242 assert_select 'input[name=rev]', 0
assert_select 'a', :text => 'Statistics', :count => 0
assert_select 'a', :text => 'Atom', :count => 0
Toshi MARUYAMA
scm: filesystem: add functional test....
r5076 end
Toshi MARUYAMA
scm: filesystem: add test of no extension file whose content is only ASCII can be showing (#6256)....
r5078
def test_show_no_extension
Toshi MARUYAMA
Rails3: test: scm: filesystem: use "repository_path_hash" for path param...
r8805 get :entry, :id => PRJ_ID, :path => repository_path_hash(['test'])[:param]
Toshi MARUYAMA
scm: filesystem: add test of no extension file whose content is only ASCII can be showing (#6256)....
r5078 assert_response :success
Jean-Philippe Lang
Replaced remaining #assert_tag with #assert_select....
r13242 assert_select 'tr#L1 td.line-code', :text => /TEST CAT/
Toshi MARUYAMA
scm: filesystem: add test of no extension file whose content is only ASCII can be showing (#6256)....
r5078 end
Toshi MARUYAMA
scm: filesystem: add test for non ascii text file displaying (#6256)....
r5085
Toshi MARUYAMA
scm: filesystem: add test for no extension file mime type in functional test....
r5089 def test_entry_download_no_extension
Toshi MARUYAMA
route: scm: split entry and raw actions...
r9442 get :raw, :id => PRJ_ID, :path => repository_path_hash(['test'])[:param]
Toshi MARUYAMA
scm: filesystem: add test for no extension file mime type in functional test....
r5089 assert_response :success
assert_equal 'application/octet-stream', @response.content_type
end
Toshi MARUYAMA
scm: filesystem: add test for non ascii text file displaying (#6256)....
r5085 def test_show_non_ascii_contents
with_settings :repositories_encodings => 'UTF-8,EUC-JP' do
Toshi MARUYAMA
Rails3: test: scm: filesystem: use "repository_path_hash" for path param...
r8805 get :entry, :id => PRJ_ID,
:path => repository_path_hash(['japanese', 'euc-jp.txt'])[:param]
Toshi MARUYAMA
scm: filesystem: add test for non ascii text file displaying (#6256)....
r5085 assert_response :success
Jean-Philippe Lang
Replaced remaining #assert_tag with #assert_select....
r13242 assert_select 'tr#L2 td.line-code', :text => /japanese/
Toshi MARUYAMA
scm: add test of showing *real* non ASCII contents in functional filesystem repository test....
r5568 if @ruby19_non_utf8_pass
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 puts "TODO: show repository file contents test fails " +
"when Encoding.default_external is not UTF-8. " +
Toshi MARUYAMA
scm: add test of showing *real* non ASCII contents in functional filesystem repository test....
r5568 "Current value is '#{Encoding.default_external.to_s}'"
else
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 str_japanese = "\xe6\x97\xa5\xe6\x9c\xac\xe8\xaa\x9e".force_encoding('UTF-8')
Jean-Philippe Lang
Replaced remaining #assert_tag with #assert_select....
r13242 assert_select 'tr#L3 td.line-code', :text => /#{str_japanese}/
Toshi MARUYAMA
scm: add test of showing *real* non ASCII contents in functional filesystem repository test....
r5568 end
Toshi MARUYAMA
scm: filesystem: add test for non ascii text file displaying (#6256)....
r5085 end
end
Toshi MARUYAMA
scm: filesystem: add test for UTF-16 file displaying (#6256)....
r5086
def test_show_utf16
Jean-Philippe Lang
Merged rails-4.1 branch (#14534)....
r13100 enc = 'UTF-16'
Toshi MARUYAMA
use "UTF-16LE" instead of "UTF-16" on Ruby 1.9.2 due to test failure (#12787)...
r10951 with_settings :repositories_encodings => enc do
Toshi MARUYAMA
Rails3: test: scm: filesystem: use "repository_path_hash" for path param...
r8805 get :entry, :id => PRJ_ID,
:path => repository_path_hash(['japanese', 'utf-16.txt'])[:param]
Toshi MARUYAMA
scm: filesystem: add test for UTF-16 file displaying (#6256)....
r5086 assert_response :success
Jean-Philippe Lang
Replaced remaining #assert_tag with #assert_select....
r13242 assert_select 'tr#L2 td.line-code', :text => /japanese/
Toshi MARUYAMA
scm: filesystem: add test for UTF-16 file displaying (#6256)....
r5086 end
end
Toshi MARUYAMA
scm: filesystem: add test for displaying file over max size limit (#6256)....
r5087
Jean-Philippe Lang
Add view for "no preview" repository files (#22482)....
r15015 def test_show_text_file_should_show_other_if_too_big
Toshi MARUYAMA
scm: filesystem: add test for displaying file over max size limit (#6256)....
r5087 with_settings :file_max_size_displayed => 1 do
Toshi MARUYAMA
Rails3: test: scm: filesystem: use "repository_path_hash" for path param...
r8805 get :entry, :id => PRJ_ID,
:path => repository_path_hash(['japanese', 'big-file.txt'])[:param]
Toshi MARUYAMA
scm: filesystem: add test for displaying file over max size limit (#6256)....
r5087 assert_response :success
Jean-Philippe Lang
Add view for "no preview" repository files (#22482)....
r15015 assert_equal 'text/html', @response.content_type
assert_select 'p.nodata'
Toshi MARUYAMA
scm: filesystem: add test for displaying file over max size limit (#6256)....
r5087 end
end
Toshi MARUYAMA
scm: filesystem: add functional test of destroying valid repository (#6713, #4725)....
r6118
def test_destroy_valid_repository
@request.session[:user_id] = 1 # admin
Jean-Philippe Lang
Resourcified repositories for CRUD operations to prepare for multiple SCM per project (#779)....
r8528 assert_difference 'Repository.count', -1 do
delete :destroy, :id => @repository.id
end
Toshi MARUYAMA
scm: filesystem: add functional test of destroying valid repository (#6713, #4725)....
r6118 assert_response 302
@project.reload
assert_nil @project.repository
end
Toshi MARUYAMA
scm: filesystem: add functional test of destroying invalid repository (#6713, #4725)....
r6119
def test_destroy_invalid_repository
@request.session[:user_id] = 1 # admin
Jean-Philippe Lang
Resourcified repositories for CRUD operations to prepare for multiple SCM per project (#779)....
r8528 @project.repository.destroy
@repository = Repository::Filesystem.create!(
:project => @project,
Toshi MARUYAMA
scm: filesystem: add functional test of destroying invalid repository (#6713, #4725)....
r6119 :url => "/invalid",
:path_encoding => ''
)
Jean-Philippe Lang
Resourcified repositories for CRUD operations to prepare for multiple SCM per project (#779)....
r8528 assert_difference 'Repository.count', -1 do
delete :destroy, :id => @repository.id
end
Toshi MARUYAMA
scm: filesystem: add functional test of destroying invalid repository (#6713, #4725)....
r6119 assert_response 302
@project.reload
assert_nil @project.repository
end
Toshi MARUYAMA
scm: filesystem: add functional test....
r5076 else
puts "Filesystem test repository NOT FOUND. Skipping functional tests !!!"
def test_fake; assert true end
end
end