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:
55
spec/factories.rb
Normal file
55
spec/factories.rb
Normal file
@@ -0,0 +1,55 @@
|
||||
FactoryBot.define do
|
||||
factory :user do
|
||||
sequence(:nome) { |n| "Usuario Teste #{n}" }
|
||||
sequence(:email) { |n| "user#{n}@gade.com" }
|
||||
password { 'Gade@2026!' }
|
||||
role { :operador }
|
||||
ativo { true }
|
||||
|
||||
factory :admin do role { :admin } end
|
||||
factory :gerente do role { :gerente } end
|
||||
factory :operador do role { :operador } end
|
||||
|
||||
factory :motorista do
|
||||
role { :motorista }
|
||||
# email é NOT NULL + único no banco; motorista real não tem e-mail, então
|
||||
# usamos um placeholder único (mesma estratégia do db/seeds.rb).
|
||||
sequence(:email) { |n| "motorista#{n}@motorista.local" }
|
||||
password { nil }
|
||||
sequence(:nome) { |n| "Motorista #{n}" }
|
||||
sequence(:pin_code) { |n| format('%04d', n % 10000) }
|
||||
end
|
||||
end
|
||||
|
||||
factory :configuracao do
|
||||
chave { 'empresa_nome' }
|
||||
valor { 'Reem Transporte' }
|
||||
end
|
||||
|
||||
factory :consolidacao do
|
||||
sequence(:nome) { |n| "Consolidacao #{n}" }
|
||||
data_inicio { Date.new(2026, 6, 1) }
|
||||
data_fim { Date.new(2026, 6, 30) }
|
||||
association :criador, factory: :gerente
|
||||
status { :rascunho }
|
||||
end
|
||||
|
||||
factory :consolidacao_motorista do
|
||||
association :consolidacao
|
||||
sequence(:motorista_nome) { |n| "Motorista #{n}" }
|
||||
end
|
||||
|
||||
factory :consolidacao_entrega do
|
||||
association :consolidacao
|
||||
sequence(:tracking_id) { |n| "TRK-#{n}" }
|
||||
motorista_nome { 'Joao Silva' }
|
||||
tipo { :entrega_normal }
|
||||
valor_aplicado { 15.0 }
|
||||
end
|
||||
|
||||
factory :historico_estimado do
|
||||
data_hora { Time.current }
|
||||
valor_total_estimado { 150.0 }
|
||||
entregas_contadas { 10 }
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user