FIX: Allow triggering Discobot when bookmarking the entire topic (#27255)

This commit is contained in:
Jan Cernik 2024-05-30 09:58:51 -03:00 committed by GitHub
parent 5aefda1dee
commit 28fe3c339e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 22 additions and 2 deletions

View File

@ -170,11 +170,15 @@ after_initialize do
self.add_model_callback(Bookmark, :after_commit, on: :create) do
if self.user.enqueue_narrative_bot_job?
if self.bookmarkable_type == "Post"
if self.bookmarkable_type == "Post" || self.bookmarkable_type == "Topic"
is_topic = self.bookmarkable_type == "Topic"
first_post_id =
Post.where(topic_id: self.bookmarkable_id, post_number: 1).pick(:id) if is_topic
Jobs.enqueue(
:bot_input,
user_id: self.user_id,
post_id: self.bookmarkable_id,
post_id: is_topic ? first_post_id : self.bookmarkable_id,
input: "bookmark",
)
end

View File

@ -287,6 +287,22 @@ RSpec.describe DiscourseNarrativeBot::NewUserNarrative do
)
end
it "triggers the response when bookmarking the topic" do
Jobs.run_later!
topic = Fabricate(:topic)
post = Fabricate(:post, topic: topic)
bookmark = Fabricate(:bookmark, bookmarkable: topic)
expect_job_enqueued(
job: :bot_input,
args: {
user_id: bookmark.user_id,
post_id: post.id,
input: "bookmark",
},
)
end
context "when the bookmark is created" do
let(:profile_page_url) { "#{Discourse.base_url_no_prefix}/prefix/u/#{user.username}" }
let(:new_post) { Post.last }