50 lines
1.3 KiB
Ruby
50 lines
1.3 KiB
Ruby
require "rails_helper"
|
|
|
|
RSpec.describe Users::DeleteWorker, type: :worker do
|
|
describe "#perform" do
|
|
let(:user) { create(:user) }
|
|
let(:delete) { Users::Delete }
|
|
let(:worker) { subject }
|
|
|
|
before do
|
|
allow(delete).to receive(:call)
|
|
end
|
|
|
|
context "when user is found" do
|
|
it "calls the service when a user is found" do
|
|
worker.perform(user.id)
|
|
expect(delete).to have_received(:call).with(user)
|
|
end
|
|
|
|
it "sends the notification" do
|
|
expect do
|
|
worker.perform(user.id)
|
|
end.to change(ActionMailer::Base.deliveries, :count).by(1)
|
|
end
|
|
|
|
it "doesn't send a notification for admin triggered deletion" do
|
|
expect do
|
|
worker.perform(user.id, true)
|
|
end.not_to change(ActionMailer::Base.deliveries, :count)
|
|
end
|
|
|
|
it "sends the correct notification" do
|
|
allow(NotifyMailer).to receive(:account_deleted_email).and_call_original
|
|
worker.perform(user.id)
|
|
expect(NotifyMailer).to have_received(:account_deleted_email).with(user)
|
|
end
|
|
end
|
|
|
|
context "when user is not found" do
|
|
it "doesn't fail" do
|
|
worker.perform(-1)
|
|
end
|
|
|
|
it "doesn't send the notification" do
|
|
expect do
|
|
worker.perform(-1)
|
|
end.not_to change(ActionMailer::Base.deliveries, :count)
|
|
end
|
|
end
|
|
end
|
|
end
|