From: Jean-Philippe Lang Date: Sat, 12 Mar 2016 13:40:22 +0000 (+0000) Subject: Fixed that grouping issue by key/value custom field does not work (#22178). X-Git-Tag: 3.3.0~205 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=e0ae0f287a5f7e439869bd11367222928f21a624;p=redmine.git Fixed that grouping issue by key/value custom field does not work (#22178). git-svn-id: http://svn.redmine.org/redmine/trunk@15224 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- diff --git a/app/models/custom_field_enumeration.rb b/app/models/custom_field_enumeration.rb index 26a580def..e3e1f3238 100644 --- a/app/models/custom_field_enumeration.rb +++ b/app/models/custom_field_enumeration.rb @@ -65,6 +65,12 @@ class CustomFieldEnumeration < ActiveRecord::Base end end + def self.fields_for_order_statement(table=nil) + table ||= table_name + columns = ['position'] + columns.uniq.map {|field| "#{table}.#{field}"} + end + private def set_position diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb index e325e7f36..a23e632e1 100644 --- a/test/functional/issues_controller_test.rb +++ b/test/functional/issues_controller_test.rb @@ -281,6 +281,32 @@ class IssuesControllerTest < ActionController::TestCase assert_not_nil assigns(:issue_count_by_group) end + def test_index_with_query_grouped_by_key_value_custom_field + cf = IssueCustomField.create!(:name => 'Key', :is_for_all => true, :tracker_ids => [1,2,3], :field_format => 'enumeration') + cf.enumerations << valueb = CustomFieldEnumeration.new(:name => 'Value B', :position => 1) + cf.enumerations << valuea = CustomFieldEnumeration.new(:name => 'Value A', :position => 2) + CustomValue.create!(:custom_field => cf, :customized => Issue.find(1), :value => valueb.id) + CustomValue.create!(:custom_field => cf, :customized => Issue.find(2), :value => valueb.id) + CustomValue.create!(:custom_field => cf, :customized => Issue.find(3), :value => valuea.id) + CustomValue.create!(:custom_field => cf, :customized => Issue.find(5), :value => '') + + get :index, :project_id => 1, :set_filter => 1, :group_by => "cf_#{cf.id}" + assert_response :success + assert_template 'index' + assert_not_nil assigns(:issues) + assert_not_nil assigns(:issue_count_by_group) + + assert_select 'tr.group', 3 + assert_select 'tr.group' do + assert_select 'span.name', :text => 'Value B' + assert_select 'span.count', :text => '2' + end + assert_select 'tr.group' do + assert_select 'span.name', :text => 'Value A' + assert_select 'span.count', :text => '1' + end + end + def test_index_with_query_grouped_by_user_custom_field cf = IssueCustomField.create!(:name => 'User', :is_for_all => true, :tracker_ids => [1,2,3], :field_format => 'user') CustomValue.create!(:custom_field => cf, :customized => Issue.find(1), :value => '2')