# frozen_string_literal: true
# == Schema Information
#
# Table name: users
#
# id :integer not null, primary key
# firstname :string
# surname :string
# email :string(80) default(""), not null
# created_at :datetime not null
# updated_at :datetime not null
# encrypted_password :string default("")
# reset_password_token :string
# reset_password_sent_at :datetime
# remember_created_at :datetime
# sign_in_count :integer default("0")
# current_sign_in_at :datetime
# last_sign_in_at :datetime
# current_sign_in_ip :string
# last_sign_in_ip :string
# confirmation_token :string
# confirmed_at :datetime
# confirmation_sent_at :datetime
# invitation_token :string
# invitation_created_at :datetime
# invitation_sent_at :datetime
# invitation_accepted_at :datetime
# other_organisation :string
# dmponline3 :boolean
# accept_terms :boolean
# org_id :integer
# api_token :string
# invited_by_id :integer
# invited_by_type :string
# language_id :integer
# recovery_email :string
# active :boolean default("true")
# department_id :integer
#
# Indexes
#
# users_email_key (email) UNIQUE
# users_language_id_idx (language_id)
# users_org_id_idx (org_id)
#
FactoryBot.define do
factory :user do
org
firstname { Faker::Name.unique.first_name }
surname { Faker::Name.unique.last_name }
email { Faker::Internet.unique.safe_email }
password { "password" }
accept_terms { true }
trait :org_admin do
after(:create) do |user, evaluator|
%w[modify_templates modify_guidance
change_org_details
grant_permissions].each do |perm_name|
user.perms << Perm.find_or_create_by(name: perm_name)
end
end
end
trait :super_admin do
after(:create) do |user, evaluator|
%w[change_org_affiliation add_organisations
grant_permissions use_api change_org_details grant_api_to_orgs
modify_templates modify_guidance].each do |perm_name|
user.perms << Perm.find_or_create_by(name: perm_name)
end
end
end
end
end