diff --git a/lib/topic_query.rb b/lib/topic_query.rb index a8c3610650cd25..37655e4186c09f 100644 --- a/lib/topic_query.rb +++ b/lib/topic_query.rb @@ -749,7 +749,7 @@ def default_results(options = {}) # category default sort order sort_order, sort_ascending = Category.where(id: category_id).pick(:sort_order, :sort_ascending) - if sort_order && (filter.blank? || %w[latest unseen].include?(filter.to_s)) + if sort_order && (filter.blank? || %w[default latest unseen].include?(filter.to_s)) options[:order] = sort_order options[:ascending] = !!sort_ascending ? "true" : "false" else diff --git a/spec/lib/topic_query_spec.rb b/spec/lib/topic_query_spec.rb index b7a14f0f732dec..19aa429af2f897 100644 --- a/spec/lib/topic_query_spec.rb +++ b/spec/lib/topic_query_spec.rb @@ -1005,6 +1005,17 @@ class ::TopicQuery expect(topic_ids - [topic_category.id]).to eq([topic_in_cat1.id, topic_in_cat2.id]) end + it "uses the category's default sort order when filter=default is passed explicitly" do + category.update!(sort_order: "created", sort_ascending: true) + topic_ids = + TopicQuery + .new(user, category: category.id, filter: "default") + .list_latest + .topics + .map(&:id) + expect(topic_ids - [topic_category.id]).to eq([topic_in_cat1.id, topic_in_cat2.id]) + end + it "should apply default sort order to latest and unseen filters only" do category.update!(sort_order: "created", sort_ascending: true)