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>
45 lines
1.7 KiB
Ruby
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
|