69d5ba376471b2684b6fff8ba31cdb4e45af39c6
[rails.git] / test / factories / user.rb
1 FactoryBot.define do
2   factory :user do
3     sequence(:email) { |n| "user#{n}@example.com" }
4     sequence(:display_name) { |n| "User #{n}" }
5     pass_crypt { Digest::MD5.hexdigest("test") }
6
7     # These attributes are not the defaults, but in most tests we want
8     # a 'normal' user who can log in without being redirected etc.
9     status { "active" }
10     terms_seen { true }
11     data_public { true }
12
13     trait :with_home_location do
14       home_lat { rand(-90.0...90.0) }
15       home_lon { rand(-180.0...180.0) }
16     end
17
18     trait :pending do
19       status { "pending" }
20     end
21
22     trait :active do
23       status { "active" }
24     end
25
26     trait :confirmed do
27       status { "confirmed" }
28     end
29
30     trait :suspended do
31       status { "suspended" }
32     end
33
34     trait :deleted do
35       status { "deleted" }
36     end
37
38     factory :moderator_user do
39       after(:create) do |user, _evaluator|
40         create(:user_role, :role => "moderator", :user => user)
41       end
42     end
43
44     factory :administrator_user do
45       after(:create) do |user, _evaluator|
46         create(:user_role, :role => "administrator", :user => user)
47       end
48     end
49
50     factory :super_user do
51       after(:create) do |user, _evaluator|
52         UserRole::ALL_ROLES.each do |role|
53           create(:user_role, :role => role, :user => user)
54         end
55       end
56     end
57   end
58 end