101 lines
2.8 KiB
Ruby
Executable File
101 lines
2.8 KiB
Ruby
Executable File
require 'rails_helper'
|
|
|
|
describe MessageTemplates::Template::CsatSurvey do
|
|
let(:account) { create(:account) }
|
|
let(:inbox) { create(:inbox, account: account) }
|
|
let(:conversation) { create(:conversation, account: account, inbox: inbox) }
|
|
let(:service) { described_class.new(conversation: conversation) }
|
|
|
|
describe '#perform' do
|
|
context 'when no survey rules are configured' do
|
|
it 'creates a CSAT survey message' do
|
|
inbox.update(csat_config: {})
|
|
|
|
service.perform
|
|
|
|
expect(conversation.messages.template.count).to eq(1)
|
|
expect(conversation.messages.template.first.content_type).to eq('input_csat')
|
|
end
|
|
end
|
|
end
|
|
|
|
describe '#perform with contains operator' do
|
|
let(:csat_config) do
|
|
{
|
|
'display_type' => 'emoji',
|
|
'message' => 'Please rate your experience',
|
|
'survey_rules' => {
|
|
'operator' => 'contains',
|
|
'values' => %w[support help]
|
|
}
|
|
}
|
|
end
|
|
|
|
before do
|
|
inbox.update(csat_config: csat_config)
|
|
end
|
|
|
|
context 'when conversation has matching labels' do
|
|
it 'creates a CSAT survey message' do
|
|
conversation.update(label_list: %w[support urgent])
|
|
|
|
service.perform
|
|
|
|
expect(conversation.messages.template.count).to eq(1)
|
|
message = conversation.messages.template.first
|
|
expect(message.content_type).to eq('input_csat')
|
|
expect(message.content).to eq('Please rate your experience')
|
|
expect(message.content_attributes['display_type']).to eq('emoji')
|
|
end
|
|
end
|
|
|
|
context 'when conversation has no matching labels' do
|
|
it 'does not create a CSAT survey message' do
|
|
conversation.update(label_list: %w[billing-support payment])
|
|
|
|
service.perform
|
|
|
|
expect(conversation.messages.template.count).to eq(0)
|
|
end
|
|
end
|
|
end
|
|
|
|
describe '#perform with does_not_contain operator' do
|
|
let(:csat_config) do
|
|
{
|
|
'display_type' => 'emoji',
|
|
'message' => 'Please rate your experience',
|
|
'survey_rules' => {
|
|
'operator' => 'does_not_contain',
|
|
'values' => %w[support help]
|
|
}
|
|
}
|
|
end
|
|
|
|
before do
|
|
inbox.update(csat_config: csat_config)
|
|
end
|
|
|
|
context 'when conversation does not have matching labels' do
|
|
it 'creates a CSAT survey message' do
|
|
conversation.update(label_list: %w[billing payment])
|
|
|
|
service.perform
|
|
|
|
expect(conversation.messages.template.count).to eq(1)
|
|
expect(conversation.messages.template.first.content_type).to eq('input_csat')
|
|
end
|
|
end
|
|
|
|
context 'when conversation has matching labels' do
|
|
it 'does not create a CSAT survey message' do
|
|
conversation.update(label_list: %w[support urgent])
|
|
|
|
service.perform
|
|
|
|
expect(conversation.messages.template.count).to eq(0)
|
|
end
|
|
end
|
|
end
|
|
end
|