104 lines
2.8 KiB
Ruby
104 lines
2.8 KiB
Ruby
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 :externo do role { :externo } 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 :perfil_acesso do
|
|
sequence(:nome) { |n| "Perfil #{n}" }
|
|
# Um conjunto pequeno e realista: ver e fechar, sem pagar nem administrar.
|
|
permissoes { %w[consolidacao.ver consolidacao.editar consolidacao.finalizar] }
|
|
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 :variavel_personalizada do
|
|
sequence(:chave) { |n| "variavel_#{n}" }
|
|
valor { 'Valor de teste' }
|
|
ativo { true }
|
|
end
|
|
|
|
factory :grupo_contato do
|
|
sequence(:nome) { |n| "Grupo #{n}" }
|
|
ativo { true }
|
|
end
|
|
|
|
factory :contato do
|
|
sequence(:nome) { |n| "Contato #{n}" }
|
|
sequence(:telefone) { |n| format('11 9%04d-%04d', n % 10000, (n * 7) % 10000) }
|
|
ativo { true }
|
|
association :grupo_contato
|
|
end
|
|
|
|
factory :evento_notificacao do
|
|
sequence(:nome) { |n| "Evento #{n}" }
|
|
sequence(:chave) { |n| "evento_#{n}" }
|
|
gatilho { 'manual' }
|
|
ativo { true }
|
|
notificar_envolvido { true }
|
|
hora { 8 }
|
|
end
|
|
|
|
factory :grupo_evento_assinatura do
|
|
association :grupo_contato
|
|
association :evento_notificacao
|
|
canal { 'ambos' }
|
|
ativo { true }
|
|
end
|
|
|
|
factory :historico_estimado do
|
|
data_hora { Time.current }
|
|
valor_total_estimado { 150.0 }
|
|
entregas_contadas { 10 }
|
|
end
|
|
end
|