]> git.openstreetmap.org Git - rails.git/blob - test/factories/user.rb
Use a state machine for user status
[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     after(:build) do |user, _evaluator|
10       user.activate
11     end
12
13     terms_seen { true }
14     terms_agreed { Time.now.getutc }
15     data_public { true }
16
17     trait :with_home_location do
18       home_lat { rand(-90.0...90.0) }
19       home_lon { rand(-180.0...180.0) }
20     end
21
22     trait :pending do
23       after(:build) do |user, _evaluator|
24         user.deactivate
25       end
26     end
27
28     trait :active do
29       # status { "active" }
30     end
31
32     trait :confirmed do
33       after(:build) do |user, _evaluator|
34         user.confirm
35       end
36     end
37
38     trait :suspended do
39       after(:build) do |user, _evaluator|
40         user.suspend
41       end
42     end
43
44     trait :deleted do
45       after(:build) do |user, _evaluator|
46         user.soft_destroy
47       end
48     end
49
50     factory :moderator_user do
51       after(:create) do |user, _evaluator|
52         create(:user_role, :role => "moderator", :user => user)
53       end
54     end
55
56     factory :administrator_user do
57       after(:create) do |user, _evaluator|
58         create(:user_role, :role => "administrator", :user => user)
59       end
60     end
61
62     factory :super_user do
63       after(:create) do |user, _evaluator|
64         UserRole::ALL_ROLES.each do |role|
65           create(:user_role, :role => role, :user => user)
66         end
67       end
68     end
69   end
70 end