Feat: Automations Actions (#3564)

This commit is contained in:
Tejaswini Chile
2022-01-13 11:21:06 +05:30
committed by GitHub
parent 905fd62974
commit 7df68c6388
13 changed files with 124 additions and 7 deletions

View File

@@ -17,7 +17,7 @@ RSpec.describe 'Api::V1::Accounts::AutomationRulesController', type: :request do
expect(response).to have_http_status(:success)
body = JSON.parse(response.body, symbolize_names: true)
expect(body[:data].first[:id]).to eq(automation_rule.id)
expect(body[:payload].first[:id]).to eq(automation_rule.id)
end
end

View File

@@ -1,7 +1,7 @@
require 'rails_helper'
describe AutomationRuleListener do
let(:listener) { described_class.instance }
let(:account) { create(:account) }
let!(:account) { create(:account) }
let(:inbox) { create(:inbox, account: account) }
let(:contact) { create(:contact, account: account, identifier: '123') }
let(:contact_inbox) { create(:contact_inbox, contact: contact, inbox: inbox) }
@@ -69,4 +69,53 @@ describe AutomationRuleListener do
end
end
end
describe '#message_created' do
before do
automation_rule.update!(
event_name: 'message_created',
name: 'Call actions message created',
description: 'Add labels, assign team after message created',
conditions: [{ 'values': ['incoming'], 'attribute_key': 'message_type', 'query_operator': nil, 'filter_operator': 'equal_to' }]
)
end
let!(:message) { create(:message, account: account, conversation: conversation, message_type: 'incoming') }
let!(:event) do
Events::Base.new('message_created', Time.zone.now, { conversation: conversation, message: message })
end
context 'when rule matches' do
it 'triggers automation rule to assign team' do
expect(conversation.team_id).not_to eq(team.id)
automation_rule
listener.message_created(event)
conversation.reload
expect(conversation.team_id).to eq(team.id)
end
it 'triggers automation rule to add label' do
expect(conversation.labels).to eq([])
automation_rule
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
expect(conversation.assignee).to be_nil
automation_rule
listener.message_created(event)
conversation.reload
expect(conversation.assignee).to eq(user_1)
end
end
end
end