From e23511076cd7dc2f4f471c483d75df8130f2ce4a Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sun, 15 Jul 2012 16:57:04 +0000 Subject: [PATCH] No blank option for custom fields marked as required on workflow settings. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10001 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/helpers/workflows_helper.rb | 10 +++++++--- test/functional/workflows_controller_test.rb | 16 ++++++++++++++++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/app/helpers/workflows_helper.rb b/app/helpers/workflows_helper.rb index a9bc5ac81..62dca80b3 100644 --- a/app/helpers/workflows_helper.rb +++ b/app/helpers/workflows_helper.rb @@ -20,8 +20,12 @@ module WorkflowsHelper def field_permission_tag(permissions, status, field) name = field.is_a?(CustomField) ? field.id.to_s : field - select_tag("permissions[#{name}][#{status.id}]", - options_for_select([["", ""], [l(:label_readonly), "readonly"], [l(:label_required), "required"]], permissions[status.id][name]) - ) + options = [["", ""], [l(:label_readonly), "readonly"], [l(:label_required), "required"]] + + if field.is_a?(CustomField) && field.is_required? + options = [["(#{l(:label_required)})", ""], [l(:label_readonly), "readonly"]] + end + + select_tag("permissions[#{name}][#{status.id}]", options_for_select(options, permissions[status.id][name])) end end diff --git a/test/functional/workflows_controller_test.rb b/test/functional/workflows_controller_test.rb index 0a35df5df..32ac03b97 100644 --- a/test/functional/workflows_controller_test.rb +++ b/test/functional/workflows_controller_test.rb @@ -191,6 +191,22 @@ class WorkflowsControllerTest < ActionController::TestCase end end + def test_get_permissions_with_always_required_custom_field + cf = IssueCustomField.create!(:name => 'Foo', :field_format => 'string', :tracker_ids => [1], :is_required => true) + + get :permissions, :role_id => 1, :tracker_id => 1 + assert_response :success + assert_template 'permissions' + + # Custom field that is always required + # The default option is "(Required)" + assert_select 'select[name=?]', "permissions[#{cf.id}][3]" do + assert_select 'option[value=]', :text => '(Required)' + assert_select 'option[value=readonly]', :text => 'Read-only' + assert_select 'option[value=required]', 0 + end + end + def test_get_permissions_with_role_and_tracker_and_all_statuses WorkflowTransition.delete_all