Ensure CSAT survey label rules are evaluated once in CsatSurveyService before any channel-specific sending (including WhatsApp/Twilio templates), remove the duplicated rule check from the template builder, and cover the blocking-label scenario in service specs while simplifying the template specs accordingly. Co-authored-by: Sojan Jose <sojan@pepalo.com>
42 lines
1.3 KiB
Ruby
42 lines
1.3 KiB
Ruby
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
|
|
|
|
context 'when csat config is provided' do
|
|
let(:csat_config) do
|
|
{
|
|
'display_type' => 'star',
|
|
'message' => 'Please rate your experience'
|
|
}
|
|
end
|
|
|
|
before { inbox.update(csat_config: csat_config) }
|
|
|
|
it 'creates a CSAT message with configured attributes' do
|
|
service.perform
|
|
|
|
message = conversation.messages.template.last
|
|
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('star')
|
|
end
|
|
end
|
|
end
|
|
end
|