From 9c9183a35214f0ddbb7aa425178672335c049a3b Mon Sep 17 00:00:00 2001 From: Tejaswini Chile Date: Tue, 7 Mar 2023 17:40:17 +0530 Subject: [PATCH] chore: spec ensuring first_reply_created doesn't trigger automations Specs to ensure that first_reply_created event doesn't trigger automations ref: #6618 --- .../automation_rule_listener_spec.rb | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/spec/listeners/automation_rule_listener_spec.rb b/spec/listeners/automation_rule_listener_spec.rb index 73bc8a80b..11e8ee858 100644 --- a/spec/listeners/automation_rule_listener_spec.rb +++ b/spec/listeners/automation_rule_listener_spec.rb @@ -630,6 +630,31 @@ describe AutomationRuleListener do expect(conversation.messages.count).to eq(2) expect(conversation.messages.last.content).to eq('Send this message.') end + + describe '#conversation_updated with first_reply_created event' do + let(:reporting_event_listener) { ReportingEventListener.instance } + let(:human_message) { create(:message, message_type: 'outgoing', account: account, inbox: inbox, conversation: conversation) } + let(:first_reply_event) { Events::Base.new('first.reply.created', Time.zone.now, message: human_message) } + + it 'triggers automation rule only once send message to the contacts' do + reporting_event_listener.first_reply_created(first_reply_event) + listener.message_created(event) + conversation.reload + + first_reply = conversation.messages.outgoing.where.not(sender_type: 'AgentBot').where("(additional_attributes->'campaign_id') is null") + + expect(conversation.messages.count).to eq(3) + expect(conversation.messages.last.content).to eq('Send this message.') + expect(first_reply.count).to eq(1) + + automation_message = conversation.messages.last + first_reply_event = Events::Base.new('first.reply.created', Time.zone.now, message: automation_message) + reporting_event_listener.first_reply_created(first_reply_event) + + expect(conversation.messages.count).to eq(3) + expect(first_reply.count).to eq(1) + end + end end context 'when rule does not match' do