summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2016-03-12 13:40:22 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2016-03-12 13:40:22 +0000
commite0ae0f287a5f7e439869bd11367222928f21a624 (patch)
treeb62a4a51ccb2b4749fc2c7cb424800a11560a064
parent9473a373a50dca54ad0400f5ea4a4273a3a17851 (diff)
downloadredmine-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.rb6
-rw-r--r--test/functional/issues_controller_test.rb26
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')