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_veiculo do association :consolidacao sequence(:motorista_nome) { |n| "Motorista #{n}" } sequence(:vehicle) { |n| "GADE_#{format('%03d', 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