admin_controller_test.rb
157 lines
| 4.5 KiB
| text/x-ruby
|
RubyLexer
|
r6521 | # Redmine - project management software | ||
# Copyright (C) 2006-2011 Jean-Philippe Lang | ||||
|
r974 | # | ||
# 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. | ||||
|
r6521 | # | ||
|
r974 | # 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. | ||||
|
r6521 | # | ||
|
r974 | # 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. | ||||
|
r4395 | require File.expand_path('../../test_helper', __FILE__) | ||
|
r974 | require 'admin_controller' | ||
# Re-raise errors caught by the controller. | ||||
class AdminController; def rescue_action(e) raise e end; end | ||||
|
r2773 | class AdminControllerTest < ActionController::TestCase | ||
|
r1027 | fixtures :projects, :users, :roles | ||
|
r6521 | |||
|
r974 | def setup | ||
@controller = AdminController.new | ||||
@request = ActionController::TestRequest.new | ||||
@response = ActionController::TestResponse.new | ||||
User.current = nil | ||||
@request.session[:user_id] = 1 # admin | ||||
end | ||||
|
r6521 | |||
|
r1027 | def test_index | ||
get :index | ||||
assert_no_tag :tag => 'div', | ||||
:attributes => { :class => /nodata/ } | ||||
end | ||||
|
r6521 | |||
|
r1027 | def test_index_with_no_configuration_data | ||
delete_configuration_data | ||||
get :index | ||||
assert_tag :tag => 'div', | ||||
:attributes => { :class => /nodata/ } | ||||
end | ||||
|
r6521 | |||
|
r1945 | def test_projects | ||
get :projects | ||||
assert_response :success | ||||
assert_template 'projects' | ||||
assert_not_nil assigns(:projects) | ||||
# active projects only | ||||
assert_nil assigns(:projects).detect {|u| !u.active?} | ||||
end | ||||
|
r6521 | |||
|
r7962 | def test_projects_with_status_filter | ||
get :projects, :status => 1 | ||||
assert_response :success | ||||
assert_template 'projects' | ||||
assert_not_nil assigns(:projects) | ||||
# active projects only | ||||
assert_nil assigns(:projects).detect {|u| !u.active?} | ||||
end | ||||
|
r1945 | def test_projects_with_name_filter | ||
get :projects, :name => 'store', :status => '' | ||||
assert_response :success | ||||
assert_template 'projects' | ||||
projects = assigns(:projects) | ||||
assert_not_nil projects | ||||
assert_equal 1, projects.size | ||||
assert_equal 'OnlineStore', projects.first.name | ||||
end | ||||
|
r6521 | |||
|
r1027 | def test_load_default_configuration_data | ||
delete_configuration_data | ||||
post :default_configuration, :lang => 'fr' | ||||
|
r3685 | assert_response :redirect | ||
assert_nil flash[:error] | ||||
|
r1027 | assert IssueStatus.find_by_name('Nouveau') | ||
end | ||||
|
r6521 | |||
|
r974 | def test_test_email | ||
get :test_email | ||||
|
r2233 | assert_redirected_to '/settings/edit?tab=notifications' | ||
|
r974 | mail = ActionMailer::Base.deliveries.last | ||
|
r8871 | assert_not_nil mail | ||
|
r974 | user = User.find(1) | ||
assert_equal [user.mail], mail.bcc | ||||
end | ||||
|
r6521 | |||
|
r7936 | def test_test_email_failure_should_display_the_error | ||
Mailer.stubs(:deliver_test).raises(Exception, 'Some error message') | ||||
get :test_email | ||||
assert_redirected_to '/settings/edit?tab=notifications' | ||||
assert_match /Some error message/, flash[:error] | ||||
end | ||||
|
r2038 | def test_no_plugins | ||
Redmine::Plugin.clear | ||||
|
r6521 | |||
|
r2038 | get :plugins | ||
assert_response :success | ||||
assert_template 'plugins' | ||||
end | ||||
|
r6521 | |||
|
r2035 | def test_plugins | ||
|
r2038 | # Register a few plugins | ||
Redmine::Plugin.register :foo do | ||||
name 'Foo plugin' | ||||
author 'John Smith' | ||||
description 'This is a test plugin' | ||||
version '0.0.1' | ||||
settings :default => {'sample_setting' => 'value', 'foo'=>'bar'}, :partial => 'foo/settings' | ||||
end | ||||
Redmine::Plugin.register :bar do | ||||
end | ||||
|
r6521 | |||
|
r2035 | get :plugins | ||
assert_response :success | ||||
assert_template 'plugins' | ||||
|
r6521 | |||
|
r2039 | assert_tag :td, :child => { :tag => 'span', :content => 'Foo plugin' } | ||
assert_tag :td, :child => { :tag => 'span', :content => 'Bar' } | ||||
|
r2035 | end | ||
|
r974 | |||
def test_info | ||||
get :info | ||||
assert_response :success | ||||
assert_template 'info' | ||||
end | ||||
|
r6521 | |||
|
r3017 | def test_admin_menu_plugin_extension | ||
Redmine::MenuManager.map :admin_menu do |menu| | ||||
menu.push :test_admin_menu_plugin_extension, '/foo/bar', :caption => 'Test' | ||||
end | ||||
|
r6521 | |||
|
r3017 | get :index | ||
assert_response :success | ||||
assert_tag :a, :attributes => { :href => '/foo/bar' }, | ||||
:content => 'Test' | ||||
|
r6521 | |||
|
r3017 | Redmine::MenuManager.map :admin_menu do |menu| | ||
menu.delete :test_admin_menu_plugin_extension | ||||
end | ||||
end | ||||
|
r6521 | |||
|
r2035 | private | ||
|
r6521 | |||
|
r1027 | def delete_configuration_data | ||
Role.delete_all('builtin = 0') | ||||
Tracker.delete_all | ||||
IssueStatus.delete_all | ||||
Enumeration.delete_all | ||||
end | ||||
|
r974 | end | ||