Atualização da função de adicionar entregas por fora da operação

This commit is contained in:
2026-06-19 14:59:26 -03:00
parent 79c0f646da
commit 7b83f2e248
13 changed files with 399 additions and 77 deletions

View File

@@ -113,6 +113,34 @@ RSpec.describe Consolidacao, type: :model do
end
end
describe '#adicionar_apontamento! (apontamento manual multi-tipo)' do
let(:consolidacao) { create(:consolidacao) }
let(:user) { create(:gerente) }
let(:entrega) { Struct.new(:tracking_id, :driver).new('TRK-AV', 'Steferson Lucas') }
before { allow(ConsolidacaoEntrega).to receive(:valor_para).and_return(15.0) }
it 'inclui o motorista e cria um pilar manual por tipo, somando o valor' do
consolidacao.adicionar_apontamento!(entrega, %w[entrega_normal bonus], user)
cm = consolidacao.consolidacao_motoristas.find_by(motorista_nome: 'Steferson Lucas')
expect(cm).to be_present
pilares = consolidacao.consolidacao_entregas.where(tracking_id: 'TRK-AV')
expect(pilares.count).to eq(2)
expect(pilares.all?(&:manual?)).to be true
expect(cm.reload.valor_total).to eq(30.0)
end
it 'é idempotente por (tracking, tipo) e exige ao menos um tipo válido' do
consolidacao.adicionar_apontamento!(entrega, %w[entrega_normal], user)
consolidacao.adicionar_apontamento!(entrega, %w[entrega_normal], user)
expect(consolidacao.consolidacao_entregas.where(tracking_id: 'TRK-AV').count).to eq(1)
expect { consolidacao.adicionar_apontamento!(entrega, [], user) }.to raise_error(ArgumentError)
end
end
describe 'escopos de soft delete' do
it 'separa ativas de arquivadas' do
ativa = create(:consolidacao)