annotate test/functional/versions_controller_test.rb @ 1082:997f6d7738f7 bug_531

In repo controller entry action, show the page for the file even if it's binary (so user still has access to history etc links). This makes it possible to use the entry action as the default when a file is clicked on
author Chris Cannam <chris.cannam@soundsoftware.ac.uk>
date Thu, 22 Nov 2012 18:04:17 +0000
parents cbb26bc654de
children 433d4f72a19b
rev   line source
Chris@441 1 # Redmine - project management software
Chris@441 2 # Copyright (C) 2006-2011 Jean-Philippe Lang
Chris@0 3 #
Chris@0 4 # This program is free software; you can redistribute it and/or
Chris@0 5 # modify it under the terms of the GNU General Public License
Chris@0 6 # as published by the Free Software Foundation; either version 2
Chris@0 7 # of the License, or (at your option) any later version.
Chris@909 8 #
Chris@0 9 # This program is distributed in the hope that it will be useful,
Chris@0 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
Chris@0 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Chris@0 12 # GNU General Public License for more details.
Chris@909 13 #
Chris@0 14 # You should have received a copy of the GNU General Public License
Chris@0 15 # along with this program; if not, write to the Free Software
Chris@0 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Chris@0 17
Chris@119 18 require File.expand_path('../../test_helper', __FILE__)
Chris@0 19 require 'versions_controller'
Chris@0 20
Chris@0 21 # Re-raise errors caught by the controller.
Chris@0 22 class VersionsController; def rescue_action(e) raise e end; end
Chris@0 23
Chris@0 24 class VersionsControllerTest < ActionController::TestCase
Chris@441 25 fixtures :projects, :versions, :issues, :users, :roles, :members, :member_roles, :enabled_modules, :issue_statuses
Chris@909 26
Chris@0 27 def setup
Chris@0 28 @controller = VersionsController.new
Chris@0 29 @request = ActionController::TestRequest.new
Chris@0 30 @response = ActionController::TestResponse.new
Chris@0 31 User.current = nil
Chris@0 32 end
Chris@909 33
chris@22 34 def test_index
chris@22 35 get :index, :project_id => 1
chris@22 36 assert_response :success
chris@22 37 assert_template 'index'
chris@22 38 assert_not_nil assigns(:versions)
chris@22 39 # Version with no date set appears
chris@22 40 assert assigns(:versions).include?(Version.find(3))
chris@22 41 # Completed version doesn't appear
chris@22 42 assert !assigns(:versions).include?(Version.find(1))
chris@22 43 # Context menu on issues
chris@22 44 assert_select "script", :text => Regexp.new(Regexp.escape("new ContextMenu('/issues/context_menu')"))
chris@22 45 end
Chris@909 46
chris@22 47 def test_index_with_completed_versions
chris@22 48 get :index, :project_id => 1, :completed => 1
chris@22 49 assert_response :success
chris@22 50 assert_template 'index'
chris@22 51 assert_not_nil assigns(:versions)
chris@22 52 # Version with no date set appears
chris@22 53 assert assigns(:versions).include?(Version.find(3))
chris@22 54 # Completed version appears
chris@22 55 assert assigns(:versions).include?(Version.find(1))
chris@22 56 end
chris@22 57
chris@22 58 def test_index_showing_subprojects_versions
chris@22 59 @subproject_version = Version.generate!(:project => Project.find(3))
chris@22 60 get :index, :project_id => 1, :with_subprojects => 1
chris@22 61 assert_response :success
chris@22 62 assert_template 'index'
chris@22 63 assert_not_nil assigns(:versions)
chris@22 64
chris@22 65 assert assigns(:versions).include?(Version.find(4)), "Shared version not found"
chris@22 66 assert assigns(:versions).include?(@subproject_version), "Subproject version not found"
chris@22 67 end
chris@22 68
Chris@0 69 def test_show
Chris@0 70 get :show, :id => 2
Chris@0 71 assert_response :success
Chris@0 72 assert_template 'show'
Chris@0 73 assert_not_nil assigns(:version)
Chris@909 74
Chris@0 75 assert_tag :tag => 'h2', :content => /1.0/
Chris@0 76 end
Chris@909 77
chris@22 78 def test_create
Chris@0 79 @request.session[:user_id] = 2 # manager
Chris@0 80 assert_difference 'Version.count' do
chris@22 81 post :create, :project_id => '1', :version => {:name => 'test_add_version'}
Chris@0 82 end
Chris@0 83 assert_redirected_to '/projects/ecookbook/settings/versions'
Chris@0 84 version = Version.find_by_name('test_add_version')
Chris@0 85 assert_not_nil version
Chris@0 86 assert_equal 1, version.project_id
Chris@0 87 end
Chris@909 88
chris@22 89 def test_create_from_issue_form
Chris@0 90 @request.session[:user_id] = 2 # manager
Chris@0 91 assert_difference 'Version.count' do
chris@22 92 xhr :post, :create, :project_id => '1', :version => {:name => 'test_add_version_from_issue_form'}
Chris@0 93 end
Chris@0 94 assert_response :success
Chris@0 95 assert_select_rjs :replace, 'issue_fixed_version_id'
Chris@0 96 version = Version.find_by_name('test_add_version_from_issue_form')
Chris@0 97 assert_not_nil version
Chris@0 98 assert_equal 1, version.project_id
Chris@0 99 end
Chris@909 100
Chris@0 101 def test_get_edit
Chris@0 102 @request.session[:user_id] = 2
Chris@0 103 get :edit, :id => 2
Chris@0 104 assert_response :success
Chris@0 105 assert_template 'edit'
Chris@0 106 end
Chris@909 107
Chris@0 108 def test_close_completed
Chris@0 109 Version.update_all("status = 'open'")
Chris@0 110 @request.session[:user_id] = 2
chris@22 111 put :close_completed, :project_id => 'ecookbook'
Chris@0 112 assert_redirected_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => 'ecookbook'
Chris@0 113 assert_not_nil Version.find_by_status('closed')
Chris@0 114 end
Chris@909 115
chris@22 116 def test_post_update
Chris@0 117 @request.session[:user_id] = 2
Chris@909 118 put :update, :id => 2,
Chris@909 119 :version => { :name => 'New version name',
Chris@0 120 :effective_date => Date.today.strftime("%Y-%m-%d")}
Chris@0 121 assert_redirected_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => 'ecookbook'
Chris@0 122 version = Version.find(2)
Chris@0 123 assert_equal 'New version name', version.name
Chris@0 124 assert_equal Date.today, version.effective_date
Chris@0 125 end
Chris@909 126
chris@37 127 def test_post_update_with_validation_failure
chris@37 128 @request.session[:user_id] = 2
Chris@909 129 put :update, :id => 2,
Chris@909 130 :version => { :name => '',
chris@37 131 :effective_date => Date.today.strftime("%Y-%m-%d")}
chris@37 132 assert_response :success
chris@37 133 assert_template 'edit'
chris@37 134 end
Chris@0 135
Chris@0 136 def test_destroy
Chris@0 137 @request.session[:user_id] = 2
chris@22 138 delete :destroy, :id => 3
Chris@0 139 assert_redirected_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => 'ecookbook'
Chris@0 140 assert_nil Version.find_by_id(3)
Chris@0 141 end
Chris@909 142
Chris@0 143 def test_issue_status_by
Chris@0 144 xhr :get, :status_by, :id => 2
Chris@0 145 assert_response :success
Chris@0 146 assert_template '_issue_counts'
Chris@0 147 end
Chris@909 148
Chris@441 149 def test_issue_status_by_status
Chris@441 150 xhr :get, :status_by, :id => 2, :status_by => 'status'
Chris@441 151 assert_response :success
Chris@441 152 assert_template '_issue_counts'
Chris@441 153 end
Chris@0 154 end