diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2016-03-12 13:40:22 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2016-03-12 13:40:22 +0000 |
commit | e0ae0f287a5f7e439869bd11367222928f21a624 (patch) | |
tree | b62a4a51ccb2b4749fc2c7cb424800a11560a064 | |
parent | 9473a373a50dca54ad0400f5ea4a4273a3a17851 (diff) | |
download | redmine-e0ae0f287a5f7e439869bd11367222928f21a624.tar.gz redmine-e0ae0f287a5f7e439869bd11367222928f21a624.zip |
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
-rw-r--r-- | app/models/custom_field_enumeration.rb | 6 | ||||
-rw-r--r-- | test/functional/issues_controller_test.rb | 26 |
2 files changed, 32 insertions, 0 deletions
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') |