FEATURE: exclude muted categories from the "top" topics list.

This commit is contained in:
Vinoth Kannan 2020-05-08 00:34:53 +05:30
parent 4891276742
commit 744bbf6904
2 changed files with 4 additions and 1 deletions

View File

@ -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))

View File

@ -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