45 lines
1.4 KiB
Ruby
45 lines
1.4 KiB
Ruby
require 'rails_helper'
|
|
|
|
RSpec.describe Webhooks::FacebookDeliveryJob do
|
|
include ActiveJob::TestHelper
|
|
|
|
let(:message) { 'test_message' }
|
|
let(:parsed_message) { instance_double(Integrations::Facebook::MessageParser) }
|
|
let(:delivery_status) { instance_double(Integrations::Facebook::DeliveryStatus) }
|
|
|
|
before do
|
|
allow(Integrations::Facebook::MessageParser).to receive(:new).with(message).and_return(parsed_message)
|
|
allow(Integrations::Facebook::DeliveryStatus).to receive(:new).with(params: parsed_message).and_return(delivery_status)
|
|
allow(delivery_status).to receive(:perform)
|
|
end
|
|
|
|
after do
|
|
clear_enqueued_jobs
|
|
end
|
|
|
|
describe '#perform_later' do
|
|
it 'enqueues the job' do
|
|
expect do
|
|
described_class.perform_later(message)
|
|
end.to have_enqueued_job(described_class).with(message).on_queue('low')
|
|
end
|
|
end
|
|
|
|
describe '#perform' do
|
|
it 'calls the MessageParser with the correct argument' do
|
|
expect(Integrations::Facebook::MessageParser).to receive(:new).with(message)
|
|
described_class.perform_now(message)
|
|
end
|
|
|
|
it 'calls the DeliveryStatus with the correct argument' do
|
|
expect(Integrations::Facebook::DeliveryStatus).to receive(:new).with(params: parsed_message)
|
|
described_class.perform_now(message)
|
|
end
|
|
|
|
it 'executes perform on the DeliveryStatus instance' do
|
|
expect(delivery_status).to receive(:perform)
|
|
described_class.perform_now(message)
|
|
end
|
|
end
|
|
end
|