diff --git a/lib/topic_query.rb b/lib/topic_query.rb index c0f8aeacfcc70..a8c3610650cd2 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? || %i[latest unseen].include?(filter)) + if sort_order && (filter.blank? || %w[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 e1259fe8def61..b7a14f0f732de 100644 --- a/spec/lib/topic_query_spec.rb +++ b/spec/lib/topic_query_spec.rb @@ -998,6 +998,13 @@ 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 is passed as a string" do + category.update!(sort_order: "created", sort_ascending: true) + topic_ids = + TopicQuery.new(user, category: category.id, filter: "latest").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)