Atualização do READ.ME
This commit is contained in:
@@ -132,3 +132,43 @@ RSpec.describe Notificacao::Despachante do
|
||||
expect { despachar }.not_to change(NotificacaoEnvio, :count)
|
||||
end
|
||||
end
|
||||
|
||||
# Buscar o evento pela `chave` fazia só o de SISTEMA disparar: um evento criado
|
||||
# pelo ADM com o mesmo gatilho ficava mudo para sempre, sem erro nenhum — a tela
|
||||
# oferecia o gatilho e nada acontecia.
|
||||
RSpec.describe Notificacao::Despachante, '.disparar_gatilho' do
|
||||
it 'agenda TODOS os eventos ativos do gatilho, não só o de sistema' do
|
||||
sistema = create(:evento_notificacao, gatilho: 'valor_alterado', chave: 'valor_alterado', sistema: true)
|
||||
do_adm = create(:evento_notificacao, gatilho: 'valor_alterado', chave: 'aviso_extra')
|
||||
create(:evento_notificacao, gatilho: 'pagamento_efetuado', chave: 'outro')
|
||||
|
||||
agendados = []
|
||||
allow(NotificacaoJob).to receive(:perform_later) { |id, *| agendados << id }
|
||||
|
||||
described_class.disparar_gatilho(gatilho: 'valor_alterado', corpo: 'x')
|
||||
|
||||
expect(agendados).to contain_exactly(sistema.id, do_adm.id)
|
||||
end
|
||||
|
||||
it 'ignora evento desativado' do
|
||||
create(:evento_notificacao, gatilho: 'valor_alterado', chave: 'desligado', ativo: false)
|
||||
allow(NotificacaoJob).to receive(:perform_later)
|
||||
|
||||
described_class.disparar_gatilho(gatilho: 'valor_alterado', corpo: 'x')
|
||||
|
||||
expect(NotificacaoJob).not_to have_received(:perform_later)
|
||||
end
|
||||
|
||||
# O botão "disparar agora" mira UM evento — ali a chave é o identificador certo.
|
||||
it '.disparar continua agendando só o evento da chave' do
|
||||
alvo = create(:evento_notificacao, gatilho: 'manual', chave: 'so_este')
|
||||
create(:evento_notificacao, gatilho: 'manual', chave: 'outro_manual')
|
||||
|
||||
agendados = []
|
||||
allow(NotificacaoJob).to receive(:perform_later) { |id, *| agendados << id }
|
||||
|
||||
described_class.disparar(chave: 'so_este', corpo: 'x')
|
||||
|
||||
expect(agendados).to eq([alvo.id])
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Notificacao::Gatilhos do
|
||||
before { allow(Notificacao::Despachante).to receive(:disparar) }
|
||||
before { allow(Notificacao::Despachante).to receive(:disparar_gatilho) }
|
||||
|
||||
describe '.valor_alterado' do
|
||||
let(:consolidacao) { create(:consolidacao, status: :finalizada) }
|
||||
@@ -14,26 +14,26 @@ RSpec.describe Notificacao::Gatilhos do
|
||||
|
||||
described_class.valor_alterado(rascunho, cm_rasc, anterior: 50.0)
|
||||
|
||||
expect(Notificacao::Despachante).not_to have_received(:disparar)
|
||||
expect(Notificacao::Despachante).not_to have_received(:disparar_gatilho)
|
||||
end
|
||||
|
||||
it 'não dispara quando o valor não mudou' do
|
||||
described_class.valor_alterado(consolidacao, cm, anterior: 5060.0)
|
||||
expect(Notificacao::Despachante).not_to have_received(:disparar)
|
||||
expect(Notificacao::Despachante).not_to have_received(:disparar_gatilho)
|
||||
end
|
||||
|
||||
it 'descreve a mudança em {{o_que_mudou}}' do
|
||||
described_class.valor_alterado(consolidacao, cm, anterior: 4900.0)
|
||||
|
||||
expect(Notificacao::Despachante).to have_received(:disparar) do |args|
|
||||
expect(args[:chave]).to eq('valor_alterado')
|
||||
expect(Notificacao::Despachante).to have_received(:disparar_gatilho) do |args|
|
||||
expect(args[:gatilho]).to eq('valor_alterado')
|
||||
expect(args[:dados]['o_que_mudou']).to eq('Valor passou de R$ 4.900,00 para R$ 5.060,00')
|
||||
expect(args[:dados]['valor']).to eq('R$ 5.060,00')
|
||||
end
|
||||
end
|
||||
|
||||
it 'não levanta quando algo dá errado — não pode travar um fechamento' do
|
||||
allow(Notificacao::Despachante).to receive(:disparar).and_raise(StandardError, 'boom')
|
||||
allow(Notificacao::Despachante).to receive(:disparar_gatilho).and_raise(StandardError, 'boom')
|
||||
expect { described_class.valor_alterado(consolidacao, cm, anterior: 1.0) }.not_to raise_error
|
||||
end
|
||||
end
|
||||
@@ -43,8 +43,8 @@ RSpec.describe Notificacao::Gatilhos do
|
||||
described_class.operacao_alterada(operacao: 'UBS NORTE AGO 2026',
|
||||
o_que_mudou: '3 notas na operação a mais', nf: '85382')
|
||||
|
||||
expect(Notificacao::Despachante).to have_received(:disparar) do |args|
|
||||
expect(args[:chave]).to eq('operacao_alterada')
|
||||
expect(Notificacao::Despachante).to have_received(:disparar_gatilho) do |args|
|
||||
expect(args[:gatilho]).to eq('operacao_alterada')
|
||||
expect(args[:dados]['operacao']).to eq('UBS NORTE AGO 2026')
|
||||
expect(args[:dados]['nf']).to eq('85382')
|
||||
end
|
||||
@@ -60,7 +60,7 @@ RSpec.describe Notificacao::Gatilhos do
|
||||
|
||||
described_class.valor_alterado(consolidacao, cm, anterior: 1.0)
|
||||
|
||||
expect(Notificacao::Despachante).to have_received(:disparar) do |args|
|
||||
expect(Notificacao::Despachante).to have_received(:disparar_gatilho) do |args|
|
||||
esperadas = Notificacao::Variaveis.nomes('valor_alterado') - ['contato'] # vem por destinatário
|
||||
expect(args[:dados].keys).to include(*esperadas)
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user