Atualização das configuração de mesagens do Zap
This commit is contained in:
@@ -41,3 +41,50 @@ RSpec.describe Contato do
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
RSpec.describe Contato, 'grupo do WhatsApp' do
|
||||
let(:jid) { '120363012345678901@g.us' }
|
||||
|
||||
def grupo(**extra)
|
||||
build(:contato, { tipo: 'grupo_whatsapp', nome: 'Motoristas SP',
|
||||
whatsapp_grupo_jid: jid, telefone: nil }.merge(extra))
|
||||
end
|
||||
|
||||
it 'aceita grupo sem telefone nem e-mail' do
|
||||
expect(grupo).to be_valid
|
||||
expect(grupo.destino_whatsapp).to eq(jid)
|
||||
end
|
||||
|
||||
it 'recusa identificador que não é de grupo' do
|
||||
contato = grupo(whatsapp_grupo_jid: '5511920051157')
|
||||
expect(contato).not_to be_valid
|
||||
expect(contato.errors[:whatsapp_grupo_jid].join).to include('@g.us')
|
||||
end
|
||||
|
||||
# Cadastro meio pessoa, meio grupo mandaria a mesma mensagem duas vezes.
|
||||
it 'limpa telefone e e-mail ao virar grupo' do
|
||||
contato = grupo(telefone: '11 92005-1157', email: 'x@y.com')
|
||||
contato.validate
|
||||
expect(contato.telefone).to be_nil
|
||||
expect(contato.email).to be_nil
|
||||
end
|
||||
|
||||
it 'limpa o grupo ao voltar a ser pessoa' do
|
||||
contato = build(:contato, tipo: 'pessoa', telefone: '11 92005-1157',
|
||||
whatsapp_grupo_jid: jid, whatsapp_grupo_nome: 'Motoristas')
|
||||
contato.validate
|
||||
expect(contato.whatsapp_grupo_jid).to be_nil
|
||||
end
|
||||
|
||||
# Cortar "Motoristas SP" em "Motoristas" no {{contato}} só empobreceria o texto.
|
||||
it '{{contato}} usa o nome inteiro do grupo' do
|
||||
expect(grupo.primeiro_nome).to eq('Motoristas SP')
|
||||
expect(build(:contato, nome: 'Carlos Matheus').primeiro_nome).to eq('Carlos')
|
||||
end
|
||||
|
||||
it 'entra no canal whatsapp e fica fora do canal e-mail' do
|
||||
salvo = grupo.tap(&:save!)
|
||||
expect(Contato.com_canal('whatsapp')).to include(salvo)
|
||||
expect(Contato.com_canal('email')).not_to include(salvo)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -33,3 +33,26 @@ RSpec.describe Notificacao::Whatsapp do
|
||||
expect(resposta.erro).to include('rede fora')
|
||||
end
|
||||
end
|
||||
|
||||
RSpec.describe Notificacao::Whatsapp, 'grupo do WhatsApp' do
|
||||
let(:jid) { '120363012345678901@g.us' }
|
||||
|
||||
it 'manda o JID cru para a ponte, sem tentar normalizar como telefone' do
|
||||
config = ConfiguracaoNotificacao.new(whatsapp_ativo: true, 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: jid, texto: 'oi', config: config)).to be_ok
|
||||
expect(ponte).to have_received(:enviar).with(para: jid, texto: 'oi')
|
||||
end
|
||||
|
||||
it 'recusa com mensagem clara quando o provedor é Twilio' do
|
||||
config = ConfiguracaoNotificacao.new(whatsapp_ativo: true, whatsapp_provedor: 'twilio')
|
||||
|
||||
resposta = described_class.enviar(para: jid, texto: 'oi', config: config)
|
||||
|
||||
expect(resposta).not_to be_ok
|
||||
expect(resposta.erro).to include('grupo')
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user