chore: Move Facebook event processing to worker (#2988)

This commit is contained in:
Sojan Jose
2021-09-13 18:05:14 +05:30
committed by GitHub
parent 26a3150fd8
commit 328edd24de
7 changed files with 56 additions and 21 deletions

View File

@@ -4,7 +4,7 @@ describe ::Messages::Facebook::MessageBuilder do
subject(:message_builder) { described_class.new(incoming_fb_text_message, facebook_channel.inbox).perform }
let!(:facebook_channel) { create(:channel_facebook_page) }
let!(:message_object) { JSON.parse(build(:incoming_fb_text_message).to_json, object_class: OpenStruct) }
let!(:message_object) { build(:incoming_fb_text_message).to_json }
let!(:incoming_fb_text_message) { Integrations::Facebook::MessageParser.new(message_object) }
let(:fb_object) { double }

View File

@@ -2,10 +2,11 @@
FactoryBot.define do
factory :incoming_fb_text_message, class: Hash do
sender { { id: '3383290475046708' } }
recipient { { id: '117172741761305' } }
message { { mid: 'm_KXGKDUpO6xbVdAmZFBVpzU1AhKVJdAIUnUH4cwkvb_K3iZsWhowDRyJ_DcowEpJjncaBwdCIoRrixvCbbO1PcA', text: 'facebook message' } }
text { 'facebook message' }
messaging do
{ sender: { id: '3383290475046708' },
recipient: { id: '117172741761305' },
message: { mid: 'm_KXGKDUpO6xbVdAmZFBVpzU1AhKVJdAIUnUH4cwkvb_K3iZsWhowDRyJ_DcowEpJjncaBwdCIoRrixvCbbO1PcA', text: 'facebook message' } }
end
initialize_with { attributes }
end

View File

@@ -0,0 +1,27 @@
require 'rails_helper'
RSpec.describe Webhooks::FacebookEventsJob, type: :job do
subject(:job) { described_class.perform_later(params) }
let!(:params) { { test: 'test' } }
it 'enqueues the job' do
expect { job }.to have_enqueued_job(described_class)
.with(params)
.on_queue('default')
end
context 'when called with params' do
it 'calls MessagePArsed and do message create' do
parser = double
creator = double
allow(::Integrations::Facebook::MessageParser).to receive(:new).and_return(parser)
allow(::Integrations::Facebook::MessageCreator).to receive(:new).and_return(creator)
allow(creator).to receive(:perform).and_return(true)
expect(::Integrations::Facebook::MessageParser).to receive(:new).with(params)
expect(::Integrations::Facebook::MessageCreator).to receive(:new).with(parser)
expect(creator).to receive(:perform)
described_class.perform_now(params)
end
end
end