mirror of
https://github.com/discourse/discourse.git
synced 2024-11-23 09:26:54 -06:00
FIX: Missing tracked sub category topics from tracked topic list (#17034)
Follow-up to 7ae647d092
This commit is contained in:
parent
3941bad075
commit
82ac698d4f
@ -362,7 +362,7 @@ class TopicQuery
|
||||
c.id
|
||||
FROM categories c
|
||||
#{has_sub_sub_categories ? "LEFT JOIN categories parent_categories ON parent_categories.id = c.parent_category_id" : ""}
|
||||
WHERE (c.parent_category_id IS NULL AND c.id IN (#{tracked_category_ids_sql}))
|
||||
WHERE (c.id IN (#{tracked_category_ids_sql}))
|
||||
OR c.parent_category_id IN (#{tracked_category_ids_sql})
|
||||
#{has_sub_sub_categories ? "OR (parent_categories.id IS NOT NULL AND parent_categories.parent_category_id IN (#{tracked_category_ids_sql}))" : ""}
|
||||
)
|
||||
|
@ -197,24 +197,34 @@ describe TopicQuery do
|
||||
sub_category = Fabricate(:category, parent_category_id: parent_category.id)
|
||||
topic3 = Fabricate(:topic, category_id: sub_category.id)
|
||||
|
||||
parent_category_2 = Fabricate(:category)
|
||||
sub_category_2 = Fabricate(:category, parent_category: parent_category_2)
|
||||
topic4 = Fabricate(:topic, category: sub_category_2)
|
||||
|
||||
CategoryUser.create!(
|
||||
category_id: parent_category.id,
|
||||
user_id: user.id,
|
||||
notification_level: NotificationLevels.all[:tracking]
|
||||
)
|
||||
|
||||
query = TopicQuery.new(user, filter: 'tracked').list_latest
|
||||
|
||||
expect(query.topics.map(&:id)).to contain_exactly(topic.id, topic2.id, topic3.id)
|
||||
|
||||
# includes sub-subcategories of tracked categories
|
||||
SiteSetting.max_category_nesting = 3
|
||||
sub_sub_category = Fabricate(:category, parent_category_id: sub_category.id)
|
||||
topic4 = Fabricate(:topic, category_id: sub_sub_category.id)
|
||||
CategoryUser.create!(
|
||||
category_id: sub_category_2.id,
|
||||
user_id: user.id,
|
||||
notification_level: NotificationLevels.all[:tracking]
|
||||
)
|
||||
|
||||
query = TopicQuery.new(user, filter: 'tracked').list_latest
|
||||
|
||||
expect(query.topics.map(&:id)).to contain_exactly(topic.id, topic2.id, topic3.id, topic4.id)
|
||||
|
||||
# includes sub-subcategories of tracked categories
|
||||
SiteSetting.max_category_nesting = 3
|
||||
sub_sub_category = Fabricate(:category, parent_category_id: sub_category.id)
|
||||
topic5 = Fabricate(:topic, category_id: sub_sub_category.id)
|
||||
|
||||
query = TopicQuery.new(user, filter: 'tracked').list_latest
|
||||
|
||||
expect(query.topics.map(&:id)).to contain_exactly(topic.id, topic2.id, topic3.id, topic4.id, topic5.id)
|
||||
end
|
||||
end
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user