You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

settings_controller_test.rb 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. # Redmine - project management software
  2. # Copyright (C) 2006-2011 Jean-Philippe Lang
  3. #
  4. # This program is free software; you can redistribute it and/or
  5. # modify it under the terms of the GNU General Public License
  6. # as published by the Free Software Foundation; either version 2
  7. # of the License, or (at your option) any later version.
  8. #
  9. # This program is distributed in the hope that it will be useful,
  10. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. # GNU General Public License for more details.
  13. #
  14. # You should have received a copy of the GNU General Public License
  15. # along with this program; if not, write to the Free Software
  16. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  17. require File.expand_path('../../test_helper', __FILE__)
  18. require 'settings_controller'
  19. # Re-raise errors caught by the controller.
  20. class SettingsController; def rescue_action(e) raise e end; end
  21. class SettingsControllerTest < ActionController::TestCase
  22. fixtures :users
  23. def setup
  24. @controller = SettingsController.new
  25. @request = ActionController::TestRequest.new
  26. @response = ActionController::TestResponse.new
  27. User.current = nil
  28. @request.session[:user_id] = 1 # admin
  29. end
  30. def test_index
  31. get :index
  32. assert_response :success
  33. assert_template 'edit'
  34. end
  35. def test_get_edit
  36. get :edit
  37. assert_response :success
  38. assert_template 'edit'
  39. assert_tag 'input', :attributes => {:name => 'settings[enabled_scm][]', :value => ''}
  40. end
  41. def test_post_edit_notifications
  42. post :edit, :settings => {:mail_from => 'functional@test.foo',
  43. :bcc_recipients => '0',
  44. :notified_events => %w(issue_added issue_updated news_added),
  45. :emails_footer => 'Test footer'
  46. }
  47. assert_redirected_to '/settings/edit'
  48. assert_equal 'functional@test.foo', Setting.mail_from
  49. assert !Setting.bcc_recipients?
  50. assert_equal %w(issue_added issue_updated news_added), Setting.notified_events
  51. assert_equal 'Test footer', Setting.emails_footer
  52. end
  53. def test_get_plugin_settings
  54. Setting.stubs(:plugin_foo).returns({'sample_setting' => 'Plugin setting value'})
  55. ActionController::Base.append_view_path(File.join(Rails.root, "test/fixtures/plugins"))
  56. Redmine::Plugin.register :foo do
  57. settings :partial => "foo_plugin/foo_plugin_settings"
  58. end
  59. get :plugin, :id => 'foo'
  60. assert_response :success
  61. assert_template 'plugin'
  62. assert_tag 'form', :attributes => {:action => '/settings/plugin/foo'},
  63. :descendant => {:tag => 'input', :attributes => {:name => 'settings[sample_setting]', :value => 'Plugin setting value'}}
  64. Redmine::Plugin.clear
  65. end
  66. def test_get_invalid_plugin_settings
  67. get :plugin, :id => 'none'
  68. assert_response 404
  69. end
  70. def test_post_plugin_settings
  71. Setting.expects(:plugin_foo=).with({'sample_setting' => 'Value'}).returns(true)
  72. Redmine::Plugin.register(:foo) {}
  73. post :plugin, :id => 'foo', :settings => {'sample_setting' => 'Value'}
  74. assert_redirected_to '/settings/plugin/foo'
  75. end
  76. end