Atualização da função de adicionar entregas por fora da operação
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user