There are 2 ways to select a set of issues on the issue list: * by using checkbox and/or the little pencil that will select/unselect all issues (#567) * by clicking on the rows (but not on the links), Ctrl and Shift keys can be used to select multiple issues Context menu was disabled on links so that the default context menu of the browser is displayed when right-clicking on a link (#545). All this was tested with Firefox 2, IE 6/7, Opera 8 (use Alt+Click instead of Right-click) and Safari 2/3. git-svn-id: http://redmine.rubyforge.org/svn/trunk@1130 e93f8b46-1217-0410-a6f0-8f06a7374b81
217 lines
6.6 KiB
Ruby
217 lines
6.6 KiB
Ruby
# redMine - project management software
|
|
# Copyright (C) 2006-2007 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.
|
|
|
|
require File.dirname(__FILE__) + '/../test_helper'
|
|
require 'projects_controller'
|
|
|
|
# Re-raise errors caught by the controller.
|
|
class ProjectsController; def rescue_action(e) raise e end; end
|
|
|
|
class ProjectsControllerTest < Test::Unit::TestCase
|
|
fixtures :projects, :versions, :users, :roles, :members, :issues, :journals, :journal_details, :trackers, :projects_trackers, :issue_statuses, :enabled_modules, :enumerations
|
|
|
|
def setup
|
|
@controller = ProjectsController.new
|
|
@request = ActionController::TestRequest.new
|
|
@response = ActionController::TestResponse.new
|
|
end
|
|
|
|
def test_index
|
|
get :index
|
|
assert_response :success
|
|
assert_template 'list'
|
|
end
|
|
|
|
def test_list
|
|
get :list
|
|
assert_response :success
|
|
assert_template 'list'
|
|
assert_not_nil assigns(:project_tree)
|
|
# Root project as hash key
|
|
assert assigns(:project_tree).has_key?(Project.find(1))
|
|
# Subproject in corresponding value
|
|
assert assigns(:project_tree)[Project.find(1)].include?(Project.find(3))
|
|
end
|
|
|
|
def test_show_by_id
|
|
get :show, :id => 1
|
|
assert_response :success
|
|
assert_template 'show'
|
|
assert_not_nil assigns(:project)
|
|
end
|
|
|
|
def test_show_by_identifier
|
|
get :show, :id => 'ecookbook'
|
|
assert_response :success
|
|
assert_template 'show'
|
|
assert_not_nil assigns(:project)
|
|
assert_equal Project.find_by_identifier('ecookbook'), assigns(:project)
|
|
end
|
|
|
|
def test_settings
|
|
@request.session[:user_id] = 2 # manager
|
|
get :settings, :id => 1
|
|
assert_response :success
|
|
assert_template 'settings'
|
|
end
|
|
|
|
def test_edit
|
|
@request.session[:user_id] = 2 # manager
|
|
post :edit, :id => 1, :project => {:name => 'Test changed name',
|
|
:custom_field_ids => ['']}
|
|
assert_redirected_to 'projects/settings/ecookbook'
|
|
project = Project.find(1)
|
|
assert_equal 'Test changed name', project.name
|
|
end
|
|
|
|
def test_get_destroy
|
|
@request.session[:user_id] = 1 # admin
|
|
get :destroy, :id => 1
|
|
assert_response :success
|
|
assert_template 'destroy'
|
|
assert_not_nil Project.find_by_id(1)
|
|
end
|
|
|
|
def test_post_destroy
|
|
@request.session[:user_id] = 1 # admin
|
|
post :destroy, :id => 1, :confirm => 1
|
|
assert_redirected_to 'admin/projects'
|
|
assert_nil Project.find_by_id(1)
|
|
end
|
|
|
|
def test_list_files
|
|
get :list_files, :id => 1
|
|
assert_response :success
|
|
assert_template 'list_files'
|
|
assert_not_nil assigns(:versions)
|
|
end
|
|
|
|
def test_changelog
|
|
get :changelog, :id => 1
|
|
assert_response :success
|
|
assert_template 'changelog'
|
|
assert_not_nil assigns(:versions)
|
|
end
|
|
|
|
def test_roadmap
|
|
get :roadmap, :id => 1
|
|
assert_response :success
|
|
assert_template 'roadmap'
|
|
assert_not_nil assigns(:versions)
|
|
# Version with no date set appears
|
|
assert assigns(:versions).include?(Version.find(3))
|
|
# Completed version doesn't appear
|
|
assert !assigns(:versions).include?(Version.find(1))
|
|
end
|
|
|
|
def test_roadmap_with_completed_versions
|
|
get :roadmap, :id => 1, :completed => 1
|
|
assert_response :success
|
|
assert_template 'roadmap'
|
|
assert_not_nil assigns(:versions)
|
|
# Version with no date set appears
|
|
assert assigns(:versions).include?(Version.find(3))
|
|
# Completed version appears
|
|
assert assigns(:versions).include?(Version.find(1))
|
|
end
|
|
|
|
def test_activity
|
|
get :activity, :id => 1, :year => 2.days.ago.to_date.year, :month => 2.days.ago.to_date.month
|
|
assert_response :success
|
|
assert_template 'activity'
|
|
assert_not_nil assigns(:events_by_day)
|
|
|
|
assert_tag :tag => "h3",
|
|
:content => /#{2.days.ago.to_date.day}/,
|
|
:sibling => { :tag => "dl",
|
|
:child => { :tag => "dt",
|
|
:attributes => { :class => 'journal' },
|
|
:child => { :tag => "a",
|
|
:content => /(#{IssueStatus.find(2).name})/,
|
|
}
|
|
}
|
|
}
|
|
|
|
get :activity, :id => 1, :year => 3.days.ago.to_date.year, :month => 3.days.ago.to_date.month
|
|
assert_response :success
|
|
assert_template 'activity'
|
|
assert_not_nil assigns(:events_by_day)
|
|
|
|
assert_tag :tag => "h3",
|
|
:content => /#{3.day.ago.to_date.day}/,
|
|
:sibling => { :tag => "dl",
|
|
:child => { :tag => "dt",
|
|
:attributes => { :class => 'issue' },
|
|
:child => { :tag => "a",
|
|
:content => /#{Issue.find(1).subject}/,
|
|
}
|
|
}
|
|
}
|
|
end
|
|
|
|
def test_calendar
|
|
get :calendar, :id => 1
|
|
assert_response :success
|
|
assert_template 'calendar'
|
|
assert_not_nil assigns(:calendar)
|
|
end
|
|
|
|
def test_calendar_with_subprojects
|
|
get :calendar, :id => 1, :with_subprojects => 1, :tracker_ids => [1, 2]
|
|
assert_response :success
|
|
assert_template 'calendar'
|
|
assert_not_nil assigns(:calendar)
|
|
end
|
|
|
|
def test_gantt
|
|
get :gantt, :id => 1
|
|
assert_response :success
|
|
assert_template 'gantt.rhtml'
|
|
assert_not_nil assigns(:events)
|
|
end
|
|
|
|
def test_gantt_with_subprojects
|
|
get :gantt, :id => 1, :with_subprojects => 1, :tracker_ids => [1, 2]
|
|
assert_response :success
|
|
assert_template 'gantt.rhtml'
|
|
assert_not_nil assigns(:events)
|
|
end
|
|
|
|
def test_gantt_export_to_pdf
|
|
get :gantt, :id => 1, :format => 'pdf'
|
|
assert_response :success
|
|
assert_template 'gantt.rfpdf'
|
|
assert_equal 'application/pdf', @response.content_type
|
|
assert_not_nil assigns(:events)
|
|
end
|
|
|
|
def test_archive
|
|
@request.session[:user_id] = 1 # admin
|
|
post :archive, :id => 1
|
|
assert_redirected_to 'admin/projects'
|
|
assert !Project.find(1).active?
|
|
end
|
|
|
|
def test_unarchive
|
|
@request.session[:user_id] = 1 # admin
|
|
Project.find(1).archive
|
|
post :unarchive, :id => 1
|
|
assert_redirected_to 'admin/projects'
|
|
assert Project.find(1).active?
|
|
end
|
|
end
|