##// END OF EJS Templates
Speeds up rendering of the project list for users who belong to hundreds of projects....
Speeds up rendering of the project list for users who belong to hundreds of projects. git-svn-id: http://svn.redmine.org/redmine/trunk@16123 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r15683:f30462595e83
r15741:f8df935dcada
Show More
settings_controller_test.rb
286 lines | 9.1 KiB | text/x-ruby | RubyLexer
/ test / functional / settings_controller_test.rb
Toshi MARUYAMA
remove trailing white-spaces from functional settings controller test....
r5732 # Redmine - project management software
Jean-Philippe Lang
Updates copyright for 2016....
r14856 # Copyright (C) 2006-2016 Jean-Philippe Lang
Jean-Philippe Lang
Admin settings screen split to tabs....
r1033 #
# 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.
Toshi MARUYAMA
remove trailing white-spaces from functional settings controller test....
r5732 #
Jean-Philippe Lang
Admin settings screen split to tabs....
r1033 # 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.
Toshi MARUYAMA
remove trailing white-spaces from functional settings controller test....
r5732 #
Jean-Philippe Lang
Admin settings screen split to tabs....
r1033 # 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.
Jean-Baptiste Barth
Use absolute paths in test/**/* requires for Ruby 1.9.2 compatibility. #4050...
r4395 require File.expand_path('../../test_helper', __FILE__)
Jean-Philippe Lang
Admin settings screen split to tabs....
r1033
Jean-Philippe Lang
Adds our own class for controller tests....
r15279 class SettingsControllerTest < Redmine::ControllerTest
Toshi MARUYAMA
add missing fixtures to SettingsControllerTest...
r12968 fixtures :projects, :trackers, :issue_statuses, :issues,
:users
Toshi MARUYAMA
remove trailing white-spaces from functional settings controller test....
r5732
Jean-Philippe Lang
Admin settings screen split to tabs....
r1033 def setup
User.current = nil
@request.session[:user_id] = 1 # admin
end
Toshi MARUYAMA
remove trailing white-spaces from functional settings controller test....
r5732
Jean-Philippe Lang
Clear settings that are changed by these tests....
r14904 def teardown
Setting.delete_all
Setting.clear_cache
end
Jean-Philippe Lang
Adds a few functional tests....
r2899 def test_index
get :index
assert_response :success
Jean-Philippe Lang
Removes calls to #assert_template and #assigns in functional tests....
r15342
assert_select 'input[name=?][value=?]', 'settings[app_title]', Setting.app_title
Jean-Philippe Lang
Adds a few functional tests....
r2899 end
Toshi MARUYAMA
remove trailing white-spaces from functional settings controller test....
r5732
Jean-Philippe Lang
Admin settings screen split to tabs....
r1033 def test_get_edit
get :edit
assert_response :success
Jean-Philippe Lang
Fixed that SCM selection is not saved when all SCM are disabled (#9937)....
r8448
Jean-Philippe Lang
Replaced remaining #assert_tag with #assert_select....
r13242 assert_select 'input[name=?][value=""]', 'settings[enabled_scm][]'
Jean-Philippe Lang
Admin settings screen split to tabs....
r1033 end
Toshi MARUYAMA
remove trailing white-spaces from functional settings controller test....
r5732
Jean-Philippe Lang
Ability to set default column order in issue list (#11068)....
r9597 def test_get_edit_should_preselect_default_issue_list_columns
with_settings :issue_list_default_columns => %w(tracker subject status updated_on) do
get :edit
assert_response :success
end
assert_select 'select[id=selected_columns][name=?]', 'settings[issue_list_default_columns][]' do
assert_select 'option', 4
assert_select 'option[value=tracker]', :text => 'Tracker'
assert_select 'option[value=subject]', :text => 'Subject'
assert_select 'option[value=status]', :text => 'Status'
assert_select 'option[value=updated_on]', :text => 'Updated'
end
assert_select 'select[id=available_columns]' do
assert_select 'option[value=tracker]', 0
assert_select 'option[value=priority]', :text => 'Priority'
end
end
Jean-Philippe Lang
Fixed that settings raises an error if not trackers exist (#11467)....
r9884 def test_get_edit_without_trackers_should_succeed
Tracker.delete_all
get :edit
assert_response :success
end
Jean-Philippe Lang
Admin settings screen split to tabs....
r1033 def test_post_edit_notifications
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 post :edit, :params => {
:settings => {
:mail_from => 'functional@test.foo',
:bcc_recipients => '0',
:notified_events => %w(issue_added issue_updated news_added),
:emails_footer => 'Test footer'
}
}
Jean-Philippe Lang
Use named routes in controllers....
r10754 assert_redirected_to '/settings'
Jean-Philippe Lang
Admin settings screen split to tabs....
r1033 assert_equal 'functional@test.foo', Setting.mail_from
assert !Setting.bcc_recipients?
assert_equal %w(issue_added issue_updated news_added), Setting.notified_events
assert_equal 'Test footer', Setting.emails_footer
end
Jean-Philippe Lang
Adds tests for plugin settings editing....
r7919
Jean-Philippe Lang
Support for multiple issue update keywords/rules in commit messages (#4911)....
r11967 def test_edit_commit_update_keywords
Jean-Philippe Lang
Ability to define commit keywords per tracker (#7590)....
r11978 with_settings :commit_update_keywords => [
{"keywords" => "fixes, resolves", "status_id" => "3"},
{"keywords" => "closes", "status_id" => "5", "done_ratio" => "100", "if_tracker_id" => "2"}
] do
Jean-Philippe Lang
Support for multiple issue update keywords/rules in commit messages (#4911)....
r11967 get :edit
end
assert_response :success
assert_select 'tr.commit-keywords', 2
Jean-Philippe Lang
Ability to define commit keywords per tracker (#7590)....
r11978 assert_select 'tr.commit-keywords:nth-child(1)' do
Jean-Philippe Lang
Support for multiple issue update keywords/rules in commit messages (#4911)....
r11967 assert_select 'input[name=?][value=?]', 'settings[commit_update_keywords][keywords][]', 'fixes, resolves'
assert_select 'select[name=?]', 'settings[commit_update_keywords][status_id][]' do
Jean-Philippe Lang
Quote values in DOM selectors for Nokogiri compatibility....
r13237 assert_select 'option[value="3"][selected=selected]'
Jean-Philippe Lang
Support for multiple issue update keywords/rules in commit messages (#4911)....
r11967 end
end
Jean-Philippe Lang
Ability to define commit keywords per tracker (#7590)....
r11978 assert_select 'tr.commit-keywords:nth-child(2)' do
Jean-Philippe Lang
Support for multiple issue update keywords/rules in commit messages (#4911)....
r11967 assert_select 'input[name=?][value=?]', 'settings[commit_update_keywords][keywords][]', 'closes'
assert_select 'select[name=?]', 'settings[commit_update_keywords][status_id][]' do
Jean-Philippe Lang
Quote values in DOM selectors for Nokogiri compatibility....
r13237 assert_select 'option[value="5"][selected=selected]', :text => 'Closed'
Jean-Philippe Lang
Support for multiple issue update keywords/rules in commit messages (#4911)....
r11967 end
assert_select 'select[name=?]', 'settings[commit_update_keywords][done_ratio][]' do
Jean-Philippe Lang
Quote values in DOM selectors for Nokogiri compatibility....
r13237 assert_select 'option[value="100"][selected=selected]', :text => '100 %'
Jean-Philippe Lang
Ability to define commit keywords per tracker (#7590)....
r11978 end
assert_select 'select[name=?]', 'settings[commit_update_keywords][if_tracker_id][]' do
Jean-Philippe Lang
Quote values in DOM selectors for Nokogiri compatibility....
r13237 assert_select 'option[value="2"][selected=selected]', :text => 'Feature request'
Jean-Philippe Lang
Support for multiple issue update keywords/rules in commit messages (#4911)....
r11967 end
end
end
def test_edit_without_commit_update_keywords_should_show_blank_line
Jean-Philippe Lang
Ability to define commit keywords per tracker (#7590)....
r11978 with_settings :commit_update_keywords => [] do
Jean-Philippe Lang
Support for multiple issue update keywords/rules in commit messages (#4911)....
r11967 get :edit
end
assert_response :success
assert_select 'tr.commit-keywords', 1 do
Jean-Philippe Lang
Ability to define commit keywords per tracker (#7590)....
r11978 assert_select 'input[name=?]:not([value])', 'settings[commit_update_keywords][keywords][]'
Jean-Philippe Lang
Support for multiple issue update keywords/rules in commit messages (#4911)....
r11967 end
end
def test_post_edit_commit_update_keywords
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 post :edit, :params => {
:settings => {
:commit_update_keywords => {
:keywords => ["resolves", "closes"],
:status_id => ["3", "5"],
:done_ratio => ["", "100"],
:if_tracker_id => ["", "2"]
}
Jean-Philippe Lang
Support for multiple issue update keywords/rules in commit messages (#4911)....
r11967 }
}
assert_redirected_to '/settings'
Jean-Philippe Lang
Ability to define commit keywords per tracker (#7590)....
r11978 assert_equal([
{"keywords" => "resolves", "status_id" => "3"},
{"keywords" => "closes", "status_id" => "5", "done_ratio" => "100", "if_tracker_id" => "2"}
], Setting.commit_update_keywords)
Jean-Philippe Lang
Support for multiple issue update keywords/rules in commit messages (#4911)....
r11967 end
Jean-Philippe Lang
Don't error if an invalid setting is given....
r15348 def test_post_edit_with_invalid_setting_should_not_error
post :edit, :params => {
:settings => {
:invalid_setting => '1'
}
}
assert_redirected_to '/settings'
end
Jean-Philippe Lang
Send a notification when security settings are changed (#21421)....
r14766 def test_post_edit_should_send_security_notification_for_notified_settings
ActionMailer::Base.deliveries.clear
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 post :edit, :params => {
:settings => {
:login_required => 1
}
Jean-Philippe Lang
Send a notification when security settings are changed (#21421)....
r14766 }
assert_not_nil (mail = ActionMailer::Base.deliveries.last)
assert_mail_body_match '0.0.0.0', mail
assert_mail_body_match I18n.t(:setting_login_required), mail
assert_select_email do
assert_select 'a[href^=?]', 'http://localhost:3000/settings'
end
# All admins should receive this
recipients = [mail.bcc, mail.cc].flatten
User.active.where(admin: true).each do |admin|
assert_include admin.mail, recipients
end
end
def test_post_edit_should_not_send_security_notification_for_non_notified_settings
ActionMailer::Base.deliveries.clear
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 post :edit, :params => {
:settings => {
:app_title => 'MineRed'
}
Jean-Philippe Lang
Send a notification when security settings are changed (#21421)....
r14766 }
assert_nil (mail = ActionMailer::Base.deliveries.last)
end
def test_post_edit_should_not_send_security_notification_for_unchanged_settings
ActionMailer::Base.deliveries.clear
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 post :edit, :params => {
:settings => {
:login_required => 0
}
Jean-Philippe Lang
Send a notification when security settings are changed (#21421)....
r14766 }
assert_nil (mail = ActionMailer::Base.deliveries.last)
end
Jean-Philippe Lang
Adds tests for plugin settings editing....
r7919 def test_get_plugin_settings
Jean-Philippe Lang
Rails 3.1 compatibility....
r8967 ActionController::Base.append_view_path(File.join(Rails.root, "test/fixtures/plugins"))
Jean-Philippe Lang
Adds tests for plugin settings editing....
r7919 Redmine::Plugin.register :foo do
Jean-Philippe Lang
Upgrade to Rails 4.2.0 (#14534)....
r13510 settings :partial => "foo_plugin/foo_plugin_settings"
Jean-Philippe Lang
Adds tests for plugin settings editing....
r7919 end
Jean-Philippe Lang
Upgrade to Rails 4.2.0 (#14534)....
r13510 Setting.plugin_foo = {'sample_setting' => 'Plugin setting value'}
Jean-Philippe Lang
Adds tests for plugin settings editing....
r7919
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 get :plugin, :params => {:id => 'foo'}
Jean-Philippe Lang
Adds tests for plugin settings editing....
r7919 assert_response :success
Jean-Philippe Lang
Removes calls to #assert_template and #assigns in functional tests....
r15342
Jean-Philippe Lang
Replaced remaining #assert_tag with #assert_select....
r13242 assert_select 'form[action="/settings/plugin/foo"]' do
assert_select 'input[name=?][value=?]', 'settings[sample_setting]', 'Plugin setting value'
end
Jean-Philippe Lang
Don't clear plugins in tests (#16258)....
r12713 ensure
Redmine::Plugin.unregister(:foo)
Jean-Philippe Lang
Adds tests for plugin settings editing....
r7919 end
def test_get_invalid_plugin_settings
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 get :plugin, :params => {:id => 'none'}
Jean-Philippe Lang
Adds tests for plugin settings editing....
r7919 assert_response 404
end
Jean-Philippe Lang
Fix 500 error for requests to the settings path for non-configurable plugins (#12911)....
r10986 def test_get_non_configurable_plugin_settings
Redmine::Plugin.register(:foo) {}
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 get :plugin, :params => {:id => 'foo'}
Jean-Philippe Lang
Fix 500 error for requests to the settings path for non-configurable plugins (#12911)....
r10986 assert_response 404
Jean-Philippe Lang
Don't clear plugins in tests (#16258)....
r12713 ensure
Redmine::Plugin.unregister(:foo)
Jean-Philippe Lang
Fix 500 error for requests to the settings path for non-configurable plugins (#12911)....
r10986 end
Jean-Philippe Lang
Adds tests for plugin settings editing....
r7919 def test_post_plugin_settings
Jean-Philippe Lang
Fix 500 error for requests to the settings path for non-configurable plugins (#12911)....
r10986 Redmine::Plugin.register(:foo) do
Jean-Philippe Lang
Adds methods for loading and adding settings....
r13337 settings :partial => 'not blank', # so that configurable? is true
:default => {'sample_setting' => 'Plugin setting value'}
Jean-Philippe Lang
Fix 500 error for requests to the settings path for non-configurable plugins (#12911)....
r10986 end
Jean-Philippe Lang
Adds tests for plugin settings editing....
r7919
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 post :plugin, :params => {
:id => 'foo',
:settings => {'sample_setting' => 'Value'}
}
Jean-Philippe Lang
Adds tests for plugin settings editing....
r7919 assert_redirected_to '/settings/plugin/foo'
Jean-Philippe Lang
Adds methods for loading and adding settings....
r13337
assert_equal({'sample_setting' => 'Value'}, Setting.plugin_foo)
Jean-Philippe Lang
Adds tests for plugin settings editing....
r7919 end
Jean-Philippe Lang
Fix 500 error for requests to the settings path for non-configurable plugins (#12911)....
r10986
def test_post_non_configurable_plugin_settings
Redmine::Plugin.register(:foo) {}
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15284 post :plugin, :params => {
:id => 'foo',
:settings => {'sample_setting' => 'Value'}
}
Jean-Philippe Lang
Fix 500 error for requests to the settings path for non-configurable plugins (#12911)....
r10986 assert_response 404
Jean-Philippe Lang
Don't clear plugins in tests (#16258)....
r12713 ensure
Redmine::Plugin.unregister(:foo)
Jean-Philippe Lang
Fix 500 error for requests to the settings path for non-configurable plugins (#12911)....
r10986 end
Jean-Philippe Lang
Optional Regex delimiters to truncate incoming emails (#5864)....
r15683
def test_post_mail_handler_delimiters_should_not_save_invalid_regex_delimiters
post :edit, :params => {
:settings => {
:mail_handler_enable_regex_delimiters => '1',
:mail_handler_body_delimiters => 'Abc[',
}
}
assert_response :success
assert_equal '0', Setting.mail_handler_enable_regex_delimiters
assert_equal '', Setting.mail_handler_body_delimiters
assert_select_error /is not a valid regular expression/
assert_select 'textarea[name=?]', 'settings[mail_handler_body_delimiters]', :text => 'Abc['
end
def test_post_mail_handler_delimiters_should_save_valid_regex_delimiters
post :edit, :params => {
:settings => {
:mail_handler_enable_regex_delimiters => '1',
:mail_handler_body_delimiters => 'On .*, .* at .*, .* <.*<mailto:.*>> wrote:',
}
}
assert_redirected_to '/settings'
assert_equal '1', Setting.mail_handler_enable_regex_delimiters
assert_equal 'On .*, .* at .*, .* <.*<mailto:.*>> wrote:', Setting.mail_handler_body_delimiters
end
Jean-Philippe Lang
Admin settings screen split to tabs....
r1033 end