[Feature] Email collect message hooks (#331)
- Add email collect hook on creating conversation - Merge contact if it already exist
This commit is contained in:
@@ -14,7 +14,8 @@ describe Facebook::SendReplyService do
|
||||
let!(:facebook_channel) { create(:facebook_page, account: account) }
|
||||
let!(:facebook_inbox) { create(:inbox, channel: facebook_channel, account: account) }
|
||||
let!(:contact) { create(:contact, account: account) }
|
||||
let(:conversation) { create(:conversation, contact: contact, inbox: facebook_inbox) }
|
||||
let(:contact_inbox) { create(:contact_inbox, contact: contact, inbox: facebook_inbox) }
|
||||
let(:conversation) { create(:conversation, contact: contact, inbox: facebook_inbox, contact_inbox: contact_inbox) }
|
||||
|
||||
describe '#perform' do
|
||||
context 'without reply' do
|
||||
@@ -41,7 +42,6 @@ describe Facebook::SendReplyService do
|
||||
|
||||
context 'with reply' do
|
||||
it 'if message is sent from chatwoot and is outgoing' do
|
||||
create(:contact_inbox, contact: contact, inbox: facebook_inbox)
|
||||
create(:message, message_type: :incoming, inbox: facebook_inbox, account: account, conversation: conversation)
|
||||
create(:message, message_type: 'outgoing', inbox: facebook_inbox, account: account, conversation: conversation)
|
||||
expect(bot).to have_received(:deliver)
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
require 'rails_helper'
|
||||
|
||||
describe ::MessageTemplates::HookExecutionService do
|
||||
context 'when it is a first message from web widget' do
|
||||
it 'calls ::MessageTemplates::Template::EmailCollect' do
|
||||
message = create(:message)
|
||||
# this hook will only get executed for conversations with out any template messages
|
||||
message.conversation.messages.template.destroy_all
|
||||
|
||||
email_collect_service = double
|
||||
allow(::MessageTemplates::Template::EmailCollect).to receive(:new).and_return(email_collect_service)
|
||||
allow(email_collect_service).to receive(:perform).and_return(true)
|
||||
|
||||
described_class.new(message: message).perform
|
||||
|
||||
expect(::MessageTemplates::Template::EmailCollect).to have_received(:new).with(conversation: message.conversation)
|
||||
expect(email_collect_service).to have_received(:perform)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,12 @@
|
||||
require 'rails_helper'
|
||||
|
||||
describe ::MessageTemplates::Template::EmailCollect do
|
||||
context 'when this hook is called' do
|
||||
let(:conversation) { create(:conversation) }
|
||||
|
||||
it 'creates the email collect messages' do
|
||||
described_class.new(conversation: conversation).perform
|
||||
expect(conversation.messages.count).to eq(3)
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user