##// END OF EJS Templates
When copying issues, let the status be changed to default or left unchanged....
When copying issues, let the status be changed to default or left unchanged. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9404 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r8828:c49ef8e543c4
r9270:09375960d69d
Show More
issue_categories_controller_test.rb
140 lines | 4.7 KiB | text/x-ruby | RubyLexer
/ test / functional / issue_categories_controller_test.rb
# 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.
require File.expand_path('../../test_helper', __FILE__)
require 'issue_categories_controller'
# Re-raise errors caught by the controller.
class IssueCategoriesController; def rescue_action(e) raise e end; end
class IssueCategoriesControllerTest < ActionController::TestCase
fixtures :projects, :users, :members, :member_roles, :roles, :enabled_modules, :issue_categories
def setup
@controller = IssueCategoriesController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
User.current = nil
@request.session[:user_id] = 2
end
def test_new
@request.session[:user_id] = 2 # manager
get :new, :project_id => '1'
assert_response :success
assert_template 'new'
end
def test_create
@request.session[:user_id] = 2 # manager
assert_difference 'IssueCategory.count' do
post :create, :project_id => '1', :issue_category => {:name => 'New category'}
end
assert_redirected_to '/projects/ecookbook/settings/categories'
category = IssueCategory.find_by_name('New category')
assert_not_nil category
assert_equal 1, category.project_id
end
def test_create_failure
@request.session[:user_id] = 2
post :create, :project_id => '1', :issue_category => {:name => ''}
assert_response :success
assert_template 'new'
end
def test_create_from_issue_form
@request.session[:user_id] = 2 # manager
assert_difference 'IssueCategory.count' do
xhr :post, :create, :project_id => '1', :issue_category => {:name => 'New category'}
end
category = IssueCategory.first(:order => 'id DESC')
assert_equal 'New category', category.name
assert_response :success
assert_select_rjs :replace, 'issue_category_id' do
assert_select "option[value=#{category.id}][selected=selected]"
end
end
def test_create_from_issue_form_with_failure
@request.session[:user_id] = 2 # manager
assert_no_difference 'IssueCategory.count' do
xhr :post, :create, :project_id => '1', :issue_category => {:name => ''}
end
assert_response :success
assert_match /alert/, @response.body
end
def test_edit
@request.session[:user_id] = 2
get :edit, :id => 2
assert_response :success
assert_template 'edit'
end
def test_update
assert_no_difference 'IssueCategory.count' do
put :update, :id => 2, :issue_category => { :name => 'Testing' }
end
assert_redirected_to '/projects/ecookbook/settings/categories'
assert_equal 'Testing', IssueCategory.find(2).name
end
def test_update_failure
put :update, :id => 2, :issue_category => { :name => '' }
assert_response :success
assert_template 'edit'
end
def test_update_not_found
put :update, :id => 97, :issue_category => { :name => 'Testing' }
assert_response 404
end
def test_destroy_category_not_in_use
delete :destroy, :id => 2
assert_redirected_to '/projects/ecookbook/settings/categories'
assert_nil IssueCategory.find_by_id(2)
end
def test_destroy_category_in_use
delete :destroy, :id => 1
assert_response :success
assert_template 'destroy'
assert_not_nil IssueCategory.find_by_id(1)
end
def test_destroy_category_in_use_with_reassignment
issue = Issue.find(:first, :conditions => {:category_id => 1})
delete :destroy, :id => 1, :todo => 'reassign', :reassign_to_id => 2
assert_redirected_to '/projects/ecookbook/settings/categories'
assert_nil IssueCategory.find_by_id(1)
# check that the issue was reassign
assert_equal 2, issue.reload.category_id
end
def test_destroy_category_in_use_without_reassignment
issue = Issue.find(:first, :conditions => {:category_id => 1})
delete :destroy, :id => 1, :todo => 'nullify'
assert_redirected_to '/projects/ecookbook/settings/categories'
assert_nil IssueCategory.find_by_id(1)
# check that the issue category was nullified
assert_nil issue.reload.category_id
end
end