mirror of
https://github.com/discourse/discourse.git
synced 2024-11-30 05:23:49 +08:00
UX: Exclude child catgegories of muted category in similar to search (#19414)
Follow-up to 207b764ea3
This commit is contained in:
parent
c9197cf9d8
commit
332ac0f299
|
@ -642,7 +642,7 @@ class Topic < ActiveRecord::Base
|
||||||
excluded_category_ids_sql = <<~SQL
|
excluded_category_ids_sql = <<~SQL
|
||||||
#{excluded_category_ids_sql}
|
#{excluded_category_ids_sql}
|
||||||
UNION
|
UNION
|
||||||
#{CategoryUser.where(notification_level: CategoryUser.notification_levels[:muted], user: user).select(:category_id).to_sql}
|
#{CategoryUser.muted_category_ids_query(user, include_direct: true).select("categories.id").to_sql}
|
||||||
SQL
|
SQL
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -701,6 +701,17 @@ RSpec.describe Topic do
|
||||||
expect(Topic.similar_to("has evil trout made any topics?", "", user)).to eq([])
|
expect(Topic.similar_to("has evil trout made any topics?", "", user)).to eq([])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'does not return topics from child categories where the user has muted the parent category' do
|
||||||
|
expect(Topic.similar_to("has evil trout made any topics?", "", user)).to eq([topic])
|
||||||
|
|
||||||
|
parent_category = topic.category
|
||||||
|
child_category = Fabricate(:category, parent_category: parent_category)
|
||||||
|
topic.update!(category: child_category)
|
||||||
|
CategoryUser.create!(category: parent_category, user: user, notification_level: CategoryUser.notification_levels[:muted])
|
||||||
|
|
||||||
|
expect(Topic.similar_to("has evil trout made any topics?", "", user)).to eq([])
|
||||||
|
end
|
||||||
|
|
||||||
context "with secure categories" do
|
context "with secure categories" do
|
||||||
fab!(:group) { Fabricate(:group) }
|
fab!(:group) { Fabricate(:group) }
|
||||||
fab!(:private_category) { Fabricate(:private_category, group: group) }
|
fab!(:private_category) { Fabricate(:private_category, group: group) }
|
||||||
|
|
Loading…
Reference in New Issue
Block a user