discourse/plugins/chat/spec/jobs/regular/send_message_notifications_...

51 lines
1.7 KiB
Ruby

# frozen_string_literal: true
RSpec.describe Jobs::SendMessageNotifications do
describe "#execute" do
context "when the message doesn't exist" do
it "does nothing" do
Chat::ChatNotifier.any_instance.expects(:notify_new).never
Chat::ChatNotifier.any_instance.expects(:notify_edit).never
subject.execute(eason: "new", timestamp: 1.minute.ago)
end
end
context "when there's a message" do
fab!(:chat_message) { Fabricate(:chat_message) }
it "does nothing when the reason is invalid" do
Chat::ChatNotifier.expects(:notify_new).never
Chat::ChatNotifier.expects(:notify_edit).never
subject.execute(
chat_message_id: chat_message.id,
reason: "invalid",
timestamp: 1.minute.ago,
)
end
it "does nothing if there is no timestamp" do
Chat::ChatNotifier.any_instance.expects(:notify_new).never
Chat::ChatNotifier.any_instance.expects(:notify_edit).never
subject.execute(chat_message_id: chat_message.id, reason: "new")
end
it "calls notify_new when the reason is 'new'" do
Chat::ChatNotifier.any_instance.expects(:notify_new).once
Chat::ChatNotifier.any_instance.expects(:notify_edit).never
subject.execute(chat_message_id: chat_message.id, reason: "new", timestamp: 1.minute.ago)
end
it "calls notify_edit when the reason is 'edit'" do
Chat::ChatNotifier.any_instance.expects(:notify_new).never
Chat::ChatNotifier.any_instance.expects(:notify_edit).once
subject.execute(chat_message_id: chat_message.id, reason: "edit", timestamp: 1.minute.ago)
end
end
end
end