From cd545cbf96c31ea04a7b5bef4b69febcff182ce2 Mon Sep 17 00:00:00 2001 From: Marius BALTEANU Date: Thu, 9 Jan 2020 08:49:18 +0200 Subject: [PATCH] Fix sort projects table by custom field --- app/models/project_query.rb | 2 +- test/functional/projects_controller_test.rb | 27 +++++++++++++++++++-- test/unit/project_query_test.rb | 2 +- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/app/models/project_query.rb b/app/models/project_query.rb index 4a36c8029..54c16d8e6 100644 --- a/app/models/project_query.rb +++ b/app/models/project_query.rb @@ -70,7 +70,7 @@ class ProjectQuery < Query return @available_columns if @available_columns @available_columns = self.class.available_columns.dup @available_columns += ProjectCustomField.visible. - map {|cf| QueryAssociationCustomFieldColumn.new(:project, cf) } + map {|cf| QueryCustomFieldColumn.new(cf) } @available_columns end diff --git a/test/functional/projects_controller_test.rb b/test/functional/projects_controller_test.rb index 444a01c52..89bfacee6 100644 --- a/test/functional/projects_controller_test.rb +++ b/test/functional/projects_controller_test.rb @@ -96,7 +96,7 @@ class ProjectsControllerTest < Redmine::ControllerTest def test_index_as_list_should_format_column_value get :index, :params => { - :c => ['name', 'status', 'short_description', 'homepage', 'parent_id', 'identifier', 'is_public', 'created_on', 'project.cf_3'], + :c => ['name', 'status', 'short_description', 'homepage', 'parent_id', 'identifier', 'is_public', 'created_on', 'cf_3'], :display_type => 'list' } assert_response :success @@ -111,7 +111,7 @@ class ProjectsControllerTest < Redmine::ControllerTest assert_select 'td.identifier', :text => 'ecookbook' assert_select 'td.is_public', :text => 'Yes' assert_select 'td.created_on', :text => format_time(project.created_on) - assert_select 'td.project_cf_3.list', :text => 'Stable' + assert_select 'td.cf_3.list', :text => 'Stable' end assert_select 'tr[id=?]', 'project-4' do assert_select 'td.parent_id a[href=?]', '/projects/ecookbook', :text => 'eCookbook' @@ -207,6 +207,29 @@ class ProjectsControllerTest < Redmine::ControllerTest end end + def test_index_sort_by_custom_field + @request.session[:user_id] = 1 + + cf = ProjectCustomField.find(3) + CustomValue.create!(:custom_field => cf, :customized => Project.find(2), :value => 'Beta') + + get( + :index, + :params => { + :display_type => 'list', + :c => ['name', 'identifier', 'cf_3'], + :set_filter => 1, + :sort => "cf_#{cf.id}:asc" + } + ) + assert_response :success + + assert_equal( + ['Beta', 'Stable'], + columns_values_in_list('cf_3').reject {|p| p.empty?} + ) + end + def test_autocomplete_js get( :autocomplete, diff --git a/test/unit/project_query_test.rb b/test/unit/project_query_test.rb index 1063bce7a..a680fb699 100644 --- a/test/unit/project_query_test.rb +++ b/test/unit/project_query_test.rb @@ -58,6 +58,6 @@ class ProjectQueryTest < ActiveSupport::TestCase def test_available_columns_should_include_project_custom_fields query = ProjectQuery.new - assert_include :"project.cf_3", query.available_columns.map(&:name) + assert_include :cf_3, query.available_columns.map(&:name) end end -- 2.22.0