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
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