Automation enhancement (#4087)
This commit is contained in:
@@ -31,16 +31,36 @@ describe AutomationRuleListener do
|
||||
},
|
||||
{ 'action_name' => 'assign_team', 'action_params' => [team.id] },
|
||||
{ 'action_name' => 'add_label', 'action_params' => %w[support priority_customer] },
|
||||
{ 'action_name' => 'assign_best_agents', 'action_params' => [user_1.id] }
|
||||
{ 'action_name' => 'send_webhook_events', 'action_params' => 'https://www.example.com' },
|
||||
{ 'action_name' => 'assign_best_agent', 'action_params' => [user_1.id] },
|
||||
{ 'action_name' => 'send_email_transcript', 'action_params' => 'new_agent@example.com' },
|
||||
{ 'action_name' => 'mute_conversation', 'action_params' => nil },
|
||||
{ 'action_name' => 'change_status', 'action_params' => ['snoozed'] },
|
||||
{ 'action_name' => 'send_message', 'action_params' => ['Send this message.'] }
|
||||
])
|
||||
end
|
||||
|
||||
describe '#conversation_status_changed' do
|
||||
context 'when rule matches' do
|
||||
it 'triggers automation rule send webhook events' do
|
||||
payload = conversation.webhook_data.merge(event: "automation_event: #{automation_rule.event_name}")
|
||||
|
||||
automation_rule
|
||||
|
||||
expect(TeamNotifications::AutomationNotificationMailer).to receive(:conversation_creation)
|
||||
|
||||
expect(WebhookJob).to receive(:perform_later).with('https://www.example.com', payload).once
|
||||
|
||||
listener.conversation_status_changed(event)
|
||||
end
|
||||
|
||||
it 'triggers automation rule to assign team' do
|
||||
expect(conversation.team_id).not_to eq(team.id)
|
||||
|
||||
automation_rule
|
||||
|
||||
expect(TeamNotifications::AutomationNotificationMailer).to receive(:conversation_creation)
|
||||
|
||||
listener.conversation_status_changed(event)
|
||||
|
||||
conversation.reload
|
||||
@@ -51,6 +71,9 @@ describe AutomationRuleListener do
|
||||
expect(conversation.labels).to eq([])
|
||||
|
||||
automation_rule
|
||||
|
||||
expect(TeamNotifications::AutomationNotificationMailer).to receive(:conversation_creation)
|
||||
|
||||
listener.conversation_status_changed(event)
|
||||
|
||||
conversation.reload
|
||||
@@ -61,12 +84,65 @@ describe AutomationRuleListener do
|
||||
expect(conversation.assignee).to be_nil
|
||||
|
||||
automation_rule
|
||||
|
||||
expect(TeamNotifications::AutomationNotificationMailer).to receive(:conversation_creation)
|
||||
|
||||
listener.conversation_status_changed(event)
|
||||
|
||||
conversation.reload
|
||||
|
||||
expect(conversation.assignee).to eq(user_1)
|
||||
end
|
||||
|
||||
it 'triggers automation rule send message to the contacts' do
|
||||
expect(conversation.messages).to be_empty
|
||||
|
||||
automation_rule
|
||||
|
||||
expect(TeamNotifications::AutomationNotificationMailer).to receive(:conversation_creation)
|
||||
|
||||
listener.conversation_status_changed(event)
|
||||
|
||||
conversation.reload
|
||||
|
||||
expect(conversation.messages.last.content).to eq('Send this message.')
|
||||
end
|
||||
|
||||
it 'triggers automation rule changes status to snoozed' do
|
||||
expect(conversation.status).to eq('resolved')
|
||||
|
||||
automation_rule
|
||||
|
||||
expect(TeamNotifications::AutomationNotificationMailer).to receive(:conversation_creation)
|
||||
|
||||
listener.conversation_status_changed(event)
|
||||
|
||||
conversation.reload
|
||||
|
||||
expect(conversation.status).to eq('snoozed')
|
||||
end
|
||||
|
||||
it 'triggers automation rule send email transcript to the mentioned email' do
|
||||
mailer = double
|
||||
|
||||
automation_rule
|
||||
|
||||
expect(TeamNotifications::AutomationNotificationMailer).to receive(:conversation_creation)
|
||||
|
||||
listener.conversation_status_changed(event)
|
||||
|
||||
conversation.reload
|
||||
|
||||
allow(mailer).to receive(:conversation_transcript)
|
||||
end
|
||||
|
||||
it 'triggers automation rule send email to the team' do
|
||||
automation_rule
|
||||
|
||||
expect(TeamNotifications::AutomationNotificationMailer).to receive(:conversation_creation)
|
||||
|
||||
listener.conversation_status_changed(event)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -114,6 +190,42 @@ describe AutomationRuleListener do
|
||||
|
||||
expect(conversation.assignee).to eq(user_1)
|
||||
end
|
||||
|
||||
it 'triggers automation rule send email transcript to the mentioned email' do
|
||||
mailer = double
|
||||
|
||||
automation_rule
|
||||
|
||||
expect(TeamNotifications::AutomationNotificationMailer).to receive(:conversation_updated)
|
||||
|
||||
listener.conversation_updated(event)
|
||||
|
||||
conversation.reload
|
||||
|
||||
allow(mailer).to receive(:conversation_transcript)
|
||||
end
|
||||
|
||||
it 'triggers automation rule send email to the team' do
|
||||
automation_rule
|
||||
|
||||
expect(TeamNotifications::AutomationNotificationMailer).to receive(:conversation_updated)
|
||||
|
||||
listener.conversation_updated(event)
|
||||
end
|
||||
|
||||
it 'triggers automation rule send message to the contacts' do
|
||||
expect(conversation.messages).to be_empty
|
||||
|
||||
automation_rule
|
||||
|
||||
expect(TeamNotifications::AutomationNotificationMailer).to receive(:conversation_updated)
|
||||
|
||||
listener.conversation_updated(event)
|
||||
|
||||
conversation.reload
|
||||
|
||||
expect(conversation.messages.last.content).to eq('Send this message.')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -137,6 +249,9 @@ describe AutomationRuleListener do
|
||||
expect(conversation.team_id).not_to eq(team.id)
|
||||
|
||||
automation_rule
|
||||
|
||||
expect(TeamNotifications::AutomationNotificationMailer).to receive(:message_created)
|
||||
|
||||
listener.message_created(event)
|
||||
|
||||
conversation.reload
|
||||
@@ -147,22 +262,41 @@ describe AutomationRuleListener do
|
||||
expect(conversation.labels).to eq([])
|
||||
|
||||
automation_rule
|
||||
|
||||
expect(TeamNotifications::AutomationNotificationMailer).to receive(:message_created)
|
||||
|
||||
listener.message_created(event)
|
||||
|
||||
conversation.reload
|
||||
expect(conversation.labels.pluck(:name)).to eq(%w[support priority_customer])
|
||||
end
|
||||
|
||||
it 'triggers automation rule to assign best agents' do
|
||||
it 'triggers automation rule to assign best agent' do
|
||||
expect(conversation.assignee).to be_nil
|
||||
|
||||
automation_rule
|
||||
|
||||
expect(TeamNotifications::AutomationNotificationMailer).to receive(:message_created)
|
||||
|
||||
listener.message_created(event)
|
||||
|
||||
conversation.reload
|
||||
|
||||
expect(conversation.assignee).to eq(user_1)
|
||||
end
|
||||
|
||||
it 'triggers automation rule send email transcript to the mentioned email' do
|
||||
mailer = double
|
||||
|
||||
automation_rule
|
||||
|
||||
expect(TeamNotifications::AutomationNotificationMailer).to receive(:message_created)
|
||||
|
||||
listener.message_created(event)
|
||||
|
||||
conversation.reload
|
||||
|
||||
allow(mailer).to receive(:conversation_transcript)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -2,11 +2,13 @@ require 'rails_helper'
|
||||
|
||||
RSpec.describe AutomationRule, type: :model do
|
||||
describe 'associations' do
|
||||
let(:account) { create(:account) }
|
||||
let(:params) do
|
||||
{
|
||||
name: 'Notify Conversation Created and mark priority query',
|
||||
description: 'Notify all administrator about conversation created and mark priority query',
|
||||
event_name: 'conversation_created',
|
||||
account_id: account.id,
|
||||
conditions: [
|
||||
{
|
||||
attribute_key: 'browser_language',
|
||||
|
||||
Reference in New Issue
Block a user