Implantação da geração de mensagem de forma livre e mudança na engine de mensagem

This commit is contained in:
2026-08-24 17:32:16 -03:00
parent 94bbe7556f
commit 88f19dd8f5
77 changed files with 4650 additions and 25 deletions

View File

@@ -0,0 +1,35 @@
require 'rails_helper'
RSpec.describe Notificacao::Whatsapp do
let(:config) { ConfiguracaoNotificacao.new(whatsapp_ativo: true) }
it 'recusa número que não dá para normalizar, sem chamar provedor nenhum' do
expect(described_class).not_to receive(:via_baileys)
resposta = described_class.enviar(para: '123', texto: 'oi', config: config)
expect(resposta).not_to be_ok
expect(resposta.erro).to include('inválido')
end
it 'usa a ponte Baileys quando o provedor é baileys' do
config.whatsapp_provedor = 'baileys'
ponte = instance_double(Notificacao::ClienteWhatsapp,
enviar: Notificacao::ClienteWhatsapp::Resposta.new(ok: true))
allow(Notificacao::ClienteWhatsapp).to receive(:padrao).and_return(ponte)
expect(described_class.enviar(para: '(11) 92005-1157', texto: 'oi', config: config)).to be_ok
expect(ponte).to have_received(:enviar).with(para: '+5511920051157', texto: 'oi')
end
it 'devolve erro em vez de levantar quando o Twilio falha' do
config.whatsapp_provedor = 'twilio'
allow(config).to receive(:credenciais_whatsapp)
.and_return({ sid: 'AC1', token: 'x', from: 'whatsapp:+5511000000000' })
allow(Notificacao::ClienteTwilio).to receive(:montar).and_raise(StandardError, 'rede fora')
resposta = described_class.enviar(para: '(11) 92005-1157', texto: 'oi', config: config)
expect(resposta).not_to be_ok
expect(resposta.erro).to include('rede fora')
end
end