Mercurial > hg > soundsoftware-site
diff test/functional/repositories_bazaar_controller_test.rb @ 909:cbb26bc654de redmine-1.3
Update to Redmine 1.3-stable branch (Redmine SVN rev 8964)
author | Chris Cannam |
---|---|
date | Fri, 24 Feb 2012 19:09:32 +0000 |
parents | cbce1fd3b1b7 |
children | 433d4f72a19b |
line wrap: on
line diff
--- a/test/functional/repositories_bazaar_controller_test.rb Fri Feb 24 18:36:29 2012 +0000 +++ b/test/functional/repositories_bazaar_controller_test.rb Fri Feb 24 19:09:32 2012 +0000 @@ -1,16 +1,16 @@ -# redMine - project management software -# Copyright (C) 2006-2008 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # 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. -# +# # 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. -# +# # 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. @@ -22,34 +22,28 @@ class RepositoriesController; def rescue_action(e) raise e end; end class RepositoriesBazaarControllerTest < ActionController::TestCase - fixtures :projects, :users, :roles, :members, :member_roles, :repositories, :enabled_modules + fixtures :projects, :users, :roles, :members, :member_roles, + :repositories, :enabled_modules - # No '..' in the repository path - REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/bazaar_repository' + REPOSITORY_PATH = Rails.root.join('tmp/test/bazaar_repository/trunk').to_s + PRJ_ID = 3 def setup @controller = RepositoriesController.new @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new User.current = nil - @project = Project.find(3) + @project = Project.find(PRJ_ID) @repository = Repository::Bazaar.create( - :project => @project, :url => REPOSITORY_PATH, + :project => @project, + :url => REPOSITORY_PATH, :log_encoding => 'UTF-8') assert @repository end if File.directory?(REPOSITORY_PATH) - def test_show - get :show, :id => 3 - assert_response :success - assert_template 'show' - assert_not_nil assigns(:entries) - assert_not_nil assigns(:changesets) - end - def test_browse_root - get :show, :id => 3 + get :show, :id => PRJ_ID assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -59,7 +53,7 @@ end def test_browse_directory - get :show, :id => 3, :path => ['directory'] + get :show, :id => PRJ_ID, :path => ['directory'] assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -69,24 +63,25 @@ assert_equal 'file', entry.kind assert_equal 'directory/edit.png', entry.path end - + def test_browse_at_given_revision - get :show, :id => 3, :path => [], :rev => 3 + get :show, :id => PRJ_ID, :path => [], :rev => 3 assert_response :success assert_template 'show' assert_not_nil assigns(:entries) - assert_equal ['directory', 'doc-deleted.txt', 'doc-ls.txt', 'doc-mkdir.txt'], assigns(:entries).collect(&:name) + assert_equal ['directory', 'doc-deleted.txt', 'doc-ls.txt', 'doc-mkdir.txt'], + assigns(:entries).collect(&:name) end - + def test_changes - get :changes, :id => 3, :path => ['doc-mkdir.txt'] + get :changes, :id => PRJ_ID, :path => ['doc-mkdir.txt'] assert_response :success assert_template 'changes' assert_tag :tag => 'h2', :content => 'doc-mkdir.txt' end - + def test_entry_show - get :entry, :id => 3, :path => ['directory', 'doc-ls.txt'] + get :entry, :id => PRJ_ID, :path => ['directory', 'doc-ls.txt'] assert_response :success assert_template 'entry' # Line 19 @@ -95,16 +90,16 @@ :attributes => { :class => /line-num/ }, :sibling => { :tag => 'td', :content => /Show help message/ } end - + def test_entry_download - get :entry, :id => 3, :path => ['directory', 'doc-ls.txt'], :format => 'raw' + get :entry, :id => PRJ_ID, :path => ['directory', 'doc-ls.txt'], :format => 'raw' assert_response :success # File content assert @response.body.include?('Show help message') end - + def test_directory_entry - get :entry, :id => 3, :path => ['directory'] + get :entry, :id => PRJ_ID, :path => ['directory'] assert_response :success assert_template 'show' assert_not_nil assigns(:entry) @@ -113,27 +108,84 @@ def test_diff # Full diff of changeset 3 - get :diff, :id => 3, :rev => 3 - assert_response :success - assert_template 'diff' - # Line 11 removed - assert_tag :tag => 'th', - :content => /11/, - :sibling => { :tag => 'td', - :attributes => { :class => /diff_out/ }, - :content => /Display more information/ } + ['inline', 'sbs'].each do |dt| + get :diff, :id => PRJ_ID, :rev => 3, :type => dt + assert_response :success + assert_template 'diff' + # Line 11 removed + assert_tag :tag => 'th', + :content => '11', + :sibling => { :tag => 'td', + :attributes => { :class => /diff_out/ }, + :content => /Display more information/ } + end end - + def test_annotate - get :annotate, :id => 3, :path => ['doc-mkdir.txt'] + get :annotate, :id => PRJ_ID, :path => ['doc-mkdir.txt'] assert_response :success assert_template 'annotate' - # Line 2, revision 3 - assert_tag :tag => 'th', :content => /2/, - :sibling => { :tag => 'td', :child => { :tag => 'a', :content => /3/ } }, - :sibling => { :tag => 'td', :content => /jsmith/ }, + assert_tag :tag => 'th', :content => '2', + :sibling => { + :tag => 'td', + :child => { + :tag => 'a', + :content => '3' + } + } + assert_tag :tag => 'th', :content => '2', + :sibling => { :tag => 'td', :content => /jsmith/ } + assert_tag :tag => 'th', :content => '2', + :sibling => { + :tag => 'td', + :child => { + :tag => 'a', + :content => '3' + } + } + assert_tag :tag => 'th', :content => '2', :sibling => { :tag => 'td', :content => /Main purpose/ } end + + def test_destroy_valid_repository + @request.session[:user_id] = 1 # admin + assert_equal 0, @repository.changesets.count + @repository.fetch_changesets + @project.reload + assert @repository.changesets.count > 0 + + get :destroy, :id => PRJ_ID + assert_response 302 + @project.reload + assert_nil @project.repository + end + + def test_destroy_invalid_repository + @request.session[:user_id] = 1 # admin + assert_equal 0, @repository.changesets.count + @repository.fetch_changesets + @project.reload + assert @repository.changesets.count > 0 + + get :destroy, :id => PRJ_ID + assert_response 302 + @project.reload + assert_nil @project.repository + + @repository = Repository::Bazaar.create( + :project => @project, + :url => "/invalid", + :log_encoding => 'UTF-8') + assert @repository + @repository.fetch_changesets + @repository.reload + assert_equal 0, @repository.changesets.count + + get :destroy, :id => PRJ_ID + assert_response 302 + @project.reload + assert_nil @project.repository + end else puts "Bazaar test repository NOT FOUND. Skipping functional tests !!!" def test_fake; assert true end