diff --git a/app/models/project_query.rb b/app/models/project_query.rb index 4464eb155..b7622b0d5 100644 --- a/app/models/project_query.rb +++ b/app/models/project_query.rb @@ -39,7 +39,7 @@ class ProjectQuery < Query QueryColumn.new(:short_description, :sortable => "#{Project.table_name}.description", :caption => :field_description), QueryColumn.new(:homepage, :sortable => "#{Project.table_name}.homepage"), QueryColumn.new(:identifier, :sortable => "#{Project.table_name}.identifier"), - QueryColumn.new(:parent_id, :sortable => "#{Project.table_name}.lft ASC", :default_order => 'desc', :caption => :field_parent), + QueryColumn.new(:parent_id, :sortable => "#{Project.table_name}.parent_id", :default_order => 'desc', :caption => :field_parent), QueryColumn.new(:is_public, :sortable => "#{Project.table_name}.is_public", :groupable => true), QueryColumn.new(:created_on, :sortable => "#{Project.table_name}.created_on", :default_order => 'desc'), QueryColumn.new(:updated_on, :sortable => "#{Project.table_name}.updated_on", :default_order => 'desc'), diff --git a/test/unit/project_query_test.rb b/test/unit/project_query_test.rb index 2b8c0ea8d..975345cef 100644 --- a/test/unit/project_query_test.rb +++ b/test/unit/project_query_test.rb @@ -141,4 +141,23 @@ class ProjectQueryTest < ActiveSupport::TestCase assert_equal scope_without, scope_with end end + + def test_sort_by_parent_id_asc_should_not_include_fixed_direction + q = ProjectQuery.new + q.sort_criteria = [['parent_id', 'asc']] + sort_clause = q.sort_clause + assert_not_nil sort_clause + # sort clause must respect the user-chosen direction (ASC), not a hardcoded one + assert_includes sort_clause.map(&:to_s).join(' '), 'ASC' + assert_not_includes sort_clause.map(&:to_s).join(' '), 'lft' + end + + def test_sort_by_parent_id_desc_should_apply_desc_direction + q = ProjectQuery.new + q.sort_criteria = [['parent_id', 'desc']] + sort_clause = q.sort_clause + assert_not_nil sort_clause + # DESC direction must be applied (previously it was always fixed to ASC via lft ASC) + assert_includes sort_clause.map(&:to_s).join(' '), 'DESC' + end end