From 744bbf6904e9d69e0077ebdfe3b7ba080600d08e Mon Sep 17 00:00:00 2001 From: Vinoth Kannan Date: Fri, 8 May 2020 00:34:53 +0530 Subject: [PATCH] FEATURE: exclude muted categories from the "top" topics list. --- lib/topic_query.rb | 1 + spec/components/topic_query_spec.rb | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/topic_query.rb b/lib/topic_query.rb index 772ea5af28b..5f8658661b4 100644 --- a/lib/topic_query.rb +++ b/lib/topic_query.rb @@ -265,6 +265,7 @@ class TopicQuery def list_top_for(period) score = "#{period}_score" create_list(:top, unordered: true) do |topics| + topics = remove_muted_categories(topics, @user) topics = topics.joins(:top_topic).where("top_topics.#{score} > 0") if period == :yearly && @user.try(:trust_level) == TrustLevel[0] topics.order(TopicQuerySQL.order_top_with_pinned_category_for(score)) diff --git a/spec/components/topic_query_spec.rb b/spec/components/topic_query_spec.rb index 0bafbbb1b34..d6e56a069de 100644 --- a/spec/components/topic_query_spec.rb +++ b/spec/components/topic_query_spec.rb @@ -265,7 +265,7 @@ describe TopicQuery do end context 'muted categories' do - it 'is removed from new and latest lists' do + it 'is removed from top, new and latest lists' do category = Fabricate(:category_with_definition) topic = Fabricate(:topic, category: category) CategoryUser.create!(user_id: user.id, @@ -273,6 +273,8 @@ describe TopicQuery do notification_level: CategoryUser.notification_levels[:muted]) expect(topic_query.list_new.topics.map(&:id)).not_to include(topic.id) expect(topic_query.list_latest.topics.map(&:id)).not_to include(topic.id) + TopTopic.create!(topic: topic, all_score: 1) + expect(topic_query.list_top_for(:all).topics.map(&:id)).not_to include(topic.id) end end