Files
Reem-Notas/spec/services/romaneios/enriquecimento_gade_spec.rb

48 lines
1.8 KiB
Ruby

require 'rails_helper'
# É o que dispensa a SEGUNDA PLANILHA do programa Python: o STATUS (NOVO/RECORRENTE)
# já está na tabela da operação.
RSpec.describe Romaneios::EnriquecimentoGade do
include_context 'tabela de operação'
let(:tabela) { "#{Operacao::PREFIXO}teste_jan_2026" }
it 'marca APARELHO = SIM só para quem está como NOVO' do
criar_operacao!(tabela)
semear_operacao!(tabela, [
{ nota_fiscal: '1', nome_completo: 'Novo Paciente', telefones: '(11) 1',
status: 'NOVO' },
{ nota_fiscal: '2', nome_completo: 'Velho Paciente', telefones: '(11) 2',
status: 'RECORRENTE' }
])
dados = described_class.new(tabela).para_notas(%w[1 2])
expect(dados['1'][:aparelho]).to eq('SIM')
expect(dados['2'][:aparelho]).to eq('')
expect(dados['1'][:nome]).to eq('NOVO PACIENTE')
expect(dados['2'][:telefones]).to eq('(11) 2')
end
it 'não quebra quando a operação não tem a coluna status — e AVISA qual falta' do
criar_operacao!(tabela, colunas: %i[nome_completo telefones])
semear_operacao!(tabela, [{ nota_fiscal: '1', nome_completo: 'Fulano', telefones: '(11) 1' }])
servico = described_class.new(tabela)
expect(servico.colunas_ausentes).to eq(['status'])
expect(servico.para_notas(['1'])['1'][:aparelho]).to eq('')
end
it 'omite a NF que não está na operação (é o plano avulso / de inclusão)' do
criar_operacao!(tabela)
semear_operacao!(tabela, [{ nota_fiscal: '1', status: 'NOVO' }])
expect(described_class.new(tabela).para_notas(%w[1 999])).not_to have_key('999')
end
it 'recusa nome de tabela fora da whitelist de operações' do
expect { described_class.new('users; DROP TABLE users') }.to raise_error(ArgumentError)
end
end