Files
Reem-Notas/spec/models/consolidacao_entrega_spec.rb
victor 19a72c066f Múltiplos pilares por entrega + tela de preços só com pilares de preço
Consolidação — multi-pilar:
- Uma entrega pode ter vários pilares ao mesmo tempo (Normal + Bônus +
  Retirada…), somando os valores. Toggles viraram multi-seleção (liga/desliga
  por pilar; classificar agora faz toggle, em massa só adiciona).
- migration: unicidade passa de [consolidacao_id, tracking_id] para
  [consolidacao_id, tracking_id, tipo].
- classificadas_count/resumo contam entregas distintas (≥1 pilar).

Configurações:
- /admin/configuracoes lista só os pilares de PREÇO (empresa/notificações
  não são preço e saíram da tela).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 03:05:15 -03:00

45 lines
1.7 KiB
Ruby

require 'rails_helper'
RSpec.describe ConsolidacaoEntrega, type: :model do
describe 'validações' do
it 'exige tracking_id, motorista_nome, tipo e valor_aplicado' do
ce = ConsolidacaoEntrega.new
ce.valid?
expect(ce.errors[:tracking_id]).to be_present
expect(ce.errors[:motorista_nome]).to be_present
expect(ce.errors[:valor_aplicado]).to be_present
end
it 'rejeita valor_aplicado negativo' do
expect(build(:consolidacao_entrega, valor_aplicado: -1)).not_to be_valid
end
it 'não permite o mesmo tracking_id com o MESMO tipo na consolidação' do
consolidacao = create(:consolidacao)
create(:consolidacao_entrega, consolidacao: consolidacao, tracking_id: 'TRK-1', tipo: :entrega_normal)
dup = build(:consolidacao_entrega, consolidacao: consolidacao, tracking_id: 'TRK-1', tipo: :entrega_normal)
expect(dup).not_to be_valid
end
it 'permite o mesmo tracking_id com pilares DIFERENTES (multi-pilar)' do
consolidacao = create(:consolidacao)
create(:consolidacao_entrega, consolidacao: consolidacao, tracking_id: 'TRK-1', tipo: :entrega_normal)
outro = build(:consolidacao_entrega, consolidacao: consolidacao, tracking_id: 'TRK-1', tipo: :bonus)
expect(outro).to be_valid
end
it 'permite o mesmo tracking_id em consolidações diferentes' do
create(:consolidacao_entrega, tracking_id: 'TRK-X')
outra = build(:consolidacao_entrega, tracking_id: 'TRK-X')
expect(outra).to be_valid
end
end
describe '#tipo_cor' do
it 'retorna o mapa de cores do tipo' do
ce = build(:consolidacao_entrega, tipo: :retirada)
expect(ce.tipo_cor[:label]).to eq('Retirada')
end
end
end