FIX: ensures tags/categories are present (#28230)

Prior to this fix the query in stalled_topic_finder would assume that tags/categories would be nil or an array of ids. However it can be an empty array, in this case the query will not return results.
This commit is contained in:
Joffrey JAFFEUX 2024-08-05 22:26:12 +02:00 committed by GitHub
parent 48ac62dfef
commit a333d71d4c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 18 additions and 2 deletions

View File

@ -7,7 +7,7 @@ class DiscourseAutomation::StalledTopicFinder
FROM topics t
SQL
sql += <<~SQL if tags
sql += <<~SQL if tags.present?
JOIN topic_tags ON topic_tags.topic_id = t.id
JOIN tags
ON tags.name IN (:tags)
@ -31,7 +31,7 @@ class DiscourseAutomation::StalledTopicFinder
)
SQL
sql += <<~SQL if categories
sql += <<~SQL if categories.present?
AND t.category_id IN (:categories)
SQL

View File

@ -56,6 +56,14 @@ describe DiscourseAutomation::StalledTopicFinder do
described_class.call(2.hours.from_now, tags: [tag_1.name]).map(&:id),
).to contain_exactly(topic_1.id)
end
it "still finds topics if tags is empty" do
create_post(topic: topic_4, user: user)
expect(described_class.call(2.hours.from_now, tags: []).map(&:id)).to contain_exactly(
topic_4.id,
)
end
end
describe "filter by categories" do
@ -80,6 +88,14 @@ describe DiscourseAutomation::StalledTopicFinder do
described_class.call(2.hours.from_now, categories: [category_1.id]).map(&:id),
).to contain_exactly(topic_1.id)
end
it "still finds topics if categories is empty" do
create_post(topic: topic_1, user: user)
expect(described_class.call(2.hours.from_now, categories: []).map(&:id)).to contain_exactly(
topic_1.id,
)
end
end
describe "filter recent topic owner replies" do