Auditoria de bugs + suíte de testes RSpec

Correções:
- Erro de sintaxe em Admin::Usuarios#toggle_ativo (entidade: \'User\') que
  derrubava /admin/usuarios
- Migration fase2 readicionava coluna `ativo` sem guard (db:migrate do zero
  quebrava); db:seed colidia no índice único de email para motoristas
- Dashboard e HistoricoEstimado agora aplicam .da_conta_gade
- ConsolidacaoMotorista#recalcular_valor usa valor_aplicado (fonte única)
- Gate de finalização por motorista (antes soma agregada com >=) e validação
  de elegibilidade em classificar/classificar_em_massa
- Remove coluna órfã pin_acesso; registra autor do arquivamento
  (arquivado_por/arquivado_em + belongs_to :arquivador)
- Dashboard redireciona motorista; Date.parse tolerante
- Remove MotoristaController + view órfãos (não roteados e quebrados)

Testes: infra RSpec + factories + specs de models, policy e request.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-15 21:47:41 -03:00
parent 146aa3e762
commit 732c6daae8
28 changed files with 656 additions and 185 deletions

View File

@@ -0,0 +1,37 @@
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 'exige tracking_id único por consolidação' do
consolidacao = create(:consolidacao)
create(:consolidacao_entrega, consolidacao: consolidacao, tracking_id: 'TRK-1')
dup = build(:consolidacao_entrega, consolidacao: consolidacao, tracking_id: 'TRK-1')
expect(dup).not_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