From 11eac5d56876a81b158863d325a4c4df7e2df768 Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Fri, 8 Apr 2011 10:36:13 -0700 Subject: [PATCH] [#5072] Add configuration panel --- app/views/settings/_issue_aging.html.erb | 10 ++++++ config/locales/en.yml | 4 +-- init.rb | 6 ++++ test/integration/configuration_test.rb | 40 ++++++++++++++++++++++++ test/test_helper.rb | 30 ++++++++++++++++-- 5 files changed, 86 insertions(+), 4 deletions(-) create mode 100644 app/views/settings/_issue_aging.html.erb create mode 100644 test/integration/configuration_test.rb diff --git a/app/views/settings/_issue_aging.html.erb b/app/views/settings/_issue_aging.html.erb new file mode 100644 index 0000000..26488dd --- /dev/null +++ b/app/views/settings/_issue_aging.html.erb @@ -0,0 +1,10 @@ +

+ <%= content_tag(:label, l(:issue_aging_text_number_of_days_for_warning), :for => 'settings_status_warning_days') %> + <%= text_field_tag("settings[status_warning_days]", @settings['status_warning_days']) %> +

+ +

+ <%= content_tag(:label, l(:issue_aging_text_number_of_days_for_error), :for => 'settings_status_error_days') %> + <%= text_field_tag("settings[status_error_days]", @settings['status_error_days']) %> +

+ diff --git a/config/locales/en.yml b/config/locales/en.yml index c55090a..ec79b12 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1,3 +1,3 @@ -# English strings go here for Rails i18n en: - my_label: "My label" + issue_aging_text_number_of_days_for_warning: "Number of days before an issue enters the warning state" + issue_aging_text_number_of_days_for_error: "Number of days before an issue enters the error state" diff --git a/init.rb b/init.rb index 0551f95..7e73c33 100644 --- a/init.rb +++ b/init.rb @@ -9,4 +9,10 @@ version '0.1.0' requires_redmine :version_or_higher => '1.0.0' + + settings(:partial => 'settings/issue_aging', + :default => { + 'status_warning_days' => '7', + 'status_error_days' => '14' + }) end diff --git a/test/integration/configuration_test.rb b/test/integration/configuration_test.rb new file mode 100644 index 0000000..ebc5959 --- /dev/null +++ b/test/integration/configuration_test.rb @@ -0,0 +1,40 @@ +require 'test_helper' + +class ConfigurationTest < ActionController::IntegrationTest + def setup + @user = User.generate!(:password => 'test', :password_confirmation => 'test', :admin => true) + end + + should "add a plugin configuration panel" do + login_as(@user.login, 'test') + visit_home + click_link 'Administration' + assert_response :success + + click_link 'Plugins' + assert_response :success + + click_link 'Configure' + assert_response :success + end + + should "be able to configure the status warning days" do + login_as(@user.login, 'test') + visit_configuration_panel + + fill_in "Number of days before an issue enters the warning state", :with => '30' + click_button 'Apply' + + assert_equal '30', plugin_configuration['status_warning_days'] + end + + should "be able to configure the status error days" do + login_as(@user.login, 'test') + visit_configuration_panel + + fill_in "Number of days before an issue enters the error state", :with => '90' + click_button 'Apply' + + assert_equal '90', plugin_configuration['status_error_days'] + end +end diff --git a/test/test_helper.rb b/test/test_helper.rb index 90825e4..f5e6eb9 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -14,14 +14,21 @@ def User.add_to_project(user, project, role) module ChiliProjectIntegrationTestHelper def login_as(user="existing", password="existing") + visit "/logout" # Make sure the session is cleared + visit "/login" fill_in 'Login', :with => user fill_in 'Password', :with => password - click_button 'login' + click_button 'Login' assert_response :success assert User.current.logged? end + def visit_home + visit '/' + assert_response :success + end + def visit_project(project) visit '/' assert_response :success @@ -66,11 +73,26 @@ def assert_response(code) +end + +module ChiliProjectIssueAgingIntegrationTestHelper + def visit_configuration_panel + visit_home + click_link 'Administration' + assert_response :success + + click_link 'Plugins' + assert_response :success + + click_link 'Configure' + assert_response :success + end + end class ActionController::IntegrationTest include ChiliProjectIntegrationTestHelper - + include ChiliProjectIssueAgingIntegrationTestHelper include Capybara end @@ -90,4 +112,8 @@ def configure_plugin(configuration_change={}) def reconfigure_plugin(configuration_change) Settings['plugin_TODO'] = Setting['plugin_TODO'].merge(configuration_change) end + + def plugin_configuration + Setting.plugin_chiliproject_issue_aging + end end