FactoryBot.define do factory :user do sequence(:email) { |n| "user#{n}@example.com" } sequence(:display_name) { |n| "User #{n}" } pass_crypt { Digest::MD5.hexdigest("test") } # These attributes are not the defaults, but in most tests we want # a 'normal' user who can log in without being redirected etc. status { "active" } terms_seen { true } terms_agreed { Time.now.getutc } data_public { true } trait :with_home_location do home_lat { rand(-90.0...90.0) } home_lon { rand(-180.0...180.0) } end trait :pending do status { "pending" } end trait :active do status { "active" } end trait :confirmed do status { "confirmed" } end trait :suspended do status { "suspended" } end trait :deleted do status { "deleted" } end factory :moderator_user do after(:create) do |user, _evaluator| create(:user_role, :role => "moderator", :user => user) end end factory :administrator_user do after(:create) do |user, _evaluator| create(:user_role, :role => "administrator", :user => user) end end factory :super_user do after(:create) do |user, _evaluator| UserRole::ALL_ROLES.each do |role| create(:user_role, :role => role, :user => user) end end end end end