From d5840849810a7a3c8e0c8d5d20fedad8f60bf005 Mon Sep 17 00:00:00 2001 From: Go MAEDA Date: Thu, 27 Mar 2025 01:14:47 +0000 Subject: [PATCH] Merged r23559 from trunk to 6.0-stable (#42342). git-svn-id: https://svn.redmine.org/redmine/branches/6.0-stable@23575 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/helpers/queries_helper.rb | 2 ++ test/functional/issues_controller_test.rb | 30 ++++++++++++++++++++--- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/app/helpers/queries_helper.rb b/app/helpers/queries_helper.rb index 3775dcd3f..ca7168f27 100644 --- a/app/helpers/queries_helper.rb +++ b/app/helpers/queries_helper.rb @@ -192,6 +192,8 @@ module QueriesHelper value = if [:hours, :spent_hours, :total_spent_hours, :estimated_hours, :total_estimated_hours, :estimated_remaining_hours].include? column.name format_hours(value) + elsif column.is_a?(QueryCustomFieldColumn) + format_object(value, thousands_delimiter: column.custom_field.thousands_delimiter?) else format_object(value) end diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb index eb2d5a6ce..db137cb1b 100644 --- a/test/functional/issues_controller_test.rb +++ b/test/functional/issues_controller_test.rb @@ -2003,12 +2003,34 @@ class IssuesControllerTest < Redmine::ControllerTest def test_index_with_int_custom_field_total field = IssueCustomField.generate!(:field_format => 'int', :is_for_all => true) - CustomValue.create!(:customized => Issue.find(1), :custom_field => field, :value => '2') - CustomValue.create!(:customized => Issue.find(2), :custom_field => field, :value => '7') - get(:index, :params => {:t => ["cf_#{field.id}"]}) + CustomValue.create!(:customized => Issue.find(1), :custom_field => field, :value => '9800') + CustomValue.create!(:customized => Issue.find(2), :custom_field => field, :value => '10') + + field_with_delimiter = IssueCustomField.generate!(:field_format => 'int', :thousands_delimiter => '1', :is_for_all => true) + CustomValue.create!(:customized => Issue.find(1), :custom_field => field_with_delimiter, :value => '9800') + CustomValue.create!(:customized => Issue.find(2), :custom_field => field_with_delimiter, :value => '10') + + get(:index, :params => {:t => ["cf_#{field.id}", "cf_#{field_with_delimiter.id}"]}) assert_response :success assert_select '.query-totals' - assert_select ".total-for-cf-#{field.id} span.value", :text => '9' + assert_select ".total-for-cf-#{field.id} span.value", :text => '9810' + assert_select ".total-for-cf-#{field_with_delimiter.id} span.value", :text => '9,810' + end + + def test_index_with_float_custom_field_total + field = IssueCustomField.generate!(field_format: 'float', is_for_all: true) + CustomValue.create!(customized: Issue.find(1), custom_field: field, value: '1000000.01') + CustomValue.create!(customized: Issue.find(2), custom_field: field, value: '99.01') + + field_with_delimiter = IssueCustomField.generate!(field_format: 'float', thousands_delimiter: '1', is_for_all: true) + CustomValue.create!(customized: Issue.find(1), custom_field: field_with_delimiter, value: '1000000.01') + CustomValue.create!(customized: Issue.find(2), custom_field: field_with_delimiter, value: '99.01') + + get(:index, params: {t: ["cf_#{field.id}", "cf_#{field_with_delimiter.id}"]}) + assert_response :success + assert_select '.query-totals' + assert_select ".total-for-cf-#{field.id} span.value", text: '1000099.02' + assert_select ".total-for-cf-#{field_with_delimiter.id} span.value", text: '1,000,099.02' end def test_index_with_spent_time_total_should_sum_visible_spent_time_only