discourse/plugins/chat/spec/jobs/regular/delete_user_messages_spec.rb
Roman Rizzi 07a9163ea8
FEATURE: Deleting a user with their posts also deletes chat messages. (#19194)
This commit introduce a new API for registering callbacks, which we'll execute when a user gets destroyed, and the `delete_posts` opt is true. The chat plugin registers one callback and queues a job to destroy every message from that user in batches.
2022-11-28 13:32:57 -03:00

33 lines
921 B
Ruby

# frozen_string_literal: true
RSpec.describe Jobs::DeleteUserMessages do
describe "#execute" do
fab!(:user_1) { Fabricate(:user) }
fab!(:channel) { Fabricate(:chat_channel) }
fab!(:chat_message) { Fabricate(:chat_message, chat_channel: channel, user: user_1) }
it "deletes messages from the user" do
subject.execute(user_id: user_1)
expect { chat_message.reload }.to raise_error(ActiveRecord::RecordNotFound)
end
it "doesn't delete messages from other users" do
user_2 = Fabricate(:user)
user_2_message = Fabricate(:chat_message, chat_channel: channel, user: user_2)
subject.execute(user_id: user_1)
expect(user_2_message.reload).to be_present
end
it "deletes trashed messages" do
chat_message.trash!
subject.execute(user_id: user_1)
expect(ChatMessage.with_deleted.where(id: chat_message.id)).to be_empty
end
end
end