]> source.dussan.org Git - redmine.git/commitdiff
Fix sort projects table by custom field (#32769).
authorGo MAEDA <maeda@farend.jp>
Sun, 12 Jan 2020 07:03:10 +0000 (07:03 +0000)
committerGo MAEDA <maeda@farend.jp>
Sun, 12 Jan 2020 07:03:10 +0000 (07:03 +0000)
Patch by Marius BALTEANU.

git-svn-id: http://svn.redmine.org/redmine/trunk@19421 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/project_query.rb
test/functional/projects_controller_test.rb
test/unit/project_query_test.rb

index 4a36c8029e9810fdb78a827125201f3347337f04..54c16d8e6bae7a4287dd1789503bd63f0a0be889 100644 (file)
@@ -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
 
index 444a01c52ef3a896bded0ee62f38d75b6c7a71fd..89bfacee6cfc7d5a6ca8d6defd15c31351457c5b 100644 (file)
@@ -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,
index 1063bce7ae7611a6cbf60101e90ab98a0a9be2a1..a680fb699bd5761e6ae1c406e59028025c712fd0 100644 (file)
@@ -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