36 lines
1.4 KiB
Ruby
36 lines
1.4 KiB
Ruby
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
|