docbrown/spec/workers/notifications/update_worker_spec.rb

38 lines
1.1 KiB
Ruby

require "rails_helper"
RSpec.describe Notifications::UpdateWorker do
describe "#perform_now" do
let(:id) { rand(1000) }
let(:worker) { subject }
before do
allow(Notifications::Update).to receive(:call)
end
describe "when wrong class is passed" do
it "raises an exception" do
allow(User).to receive(:find_by).with(id).and_return(double)
expect do
worker.perform(id, "User")
end.to raise_error(Notifications::InvalidNotifiableForUpdate, "User")
end
end
describe "when notifiable is not found" do
it "does not call the service" do
allow(Comment).to receive(:find_by).with(id: id).and_return(nil)
worker.perform(id, "Comment", nil)
expect(Notifications::Update).not_to have_received(:call)
end
end
describe "when notifiable is found" do
it "calls the service" do
article = double
allow(Article).to receive(:find_by).with(id: id).and_return(article)
worker.perform(id, "Article", "Published")
expect(Notifications::Update).to have_received(:call).with(article, "Published")
end
end
end
end