2018-05-07 16:47:29 -07:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
2018-09-03 20:48:28 +02:00
|
|
|
# Read about factories at https://github.com/thoughtbot/factory_bot
|
2016-03-09 21:34:07 +05:30
|
|
|
|
|
|
|
|
# It is a feature of our app that first signed up user is admin. This property
|
|
|
|
|
# is set in a before create callback `setup_role` in user model.
|
|
|
|
|
# We want to override this behavior when we create user factories. We want
|
|
|
|
|
# `create(:user)` to create non-admin user by default. We are enforcing it
|
|
|
|
|
# with `after create` blocks in following factories.
|
|
|
|
|
#
|
|
|
|
|
# Following commands won't work:
|
|
|
|
|
# `create(:user, is_admin: true)`
|
|
|
|
|
# `create(:admin, is_admin: false)`
|
|
|
|
|
#
|
|
|
|
|
# For a non-admin user, use: `create(:user)`
|
2019-03-13 10:31:42 +01:00
|
|
|
# For an admin user, use: `create(:admin)`
|
|
|
|
|
# For an organizer user, use `create(:organizer)`
|
2016-03-09 21:34:07 +05:30
|
|
|
|
2018-09-03 20:44:39 +02:00
|
|
|
FactoryBot.define do
|
2014-04-09 01:32:47 +02:00
|
|
|
factory :user do
|
2014-05-15 17:28:08 +05:30
|
|
|
sequence(:email) { |n| "example#{n}@example.com" }
|
2014-06-23 19:07:50 +03:00
|
|
|
sequence(:name) { |n| "name#{n}" }
|
2014-11-04 17:42:47 +01:00
|
|
|
sequence(:username) { |n| "username#{n}" }
|
2018-09-08 03:58:50 +02:00
|
|
|
password { 'changeme' }
|
|
|
|
|
password_confirmation { 'changeme' }
|
2014-07-23 09:08:50 +02:00
|
|
|
confirmed_at { Time.now }
|
2018-09-08 03:58:50 +02:00
|
|
|
biography { <<-EOS }
|
2014-06-23 19:07:50 +03:00
|
|
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus enim
|
|
|
|
|
nunc, venenatis non sapien convallis, dictum suscipit purus. Vestibulum
|
|
|
|
|
sed tincidunt tortor. Fusce viverra nisi nisi, quis congue dui faucibus
|
|
|
|
|
nec. Sed sodales suscipit nulla, accumsan porttitor augue ultrices vel.
|
|
|
|
|
Quisque cursus facilisis consequat. Etiam volutpat ligula turpis, at
|
|
|
|
|
gravida.
|
|
|
|
|
EOS
|
2018-12-19 12:59:52 -08:00
|
|
|
last_sign_in_at { Date.today }
|
2018-09-08 03:58:50 +02:00
|
|
|
is_disabled { false }
|
2014-05-09 14:44:01 +02:00
|
|
|
|
2016-03-09 21:34:07 +05:30
|
|
|
after(:create) do |user|
|
|
|
|
|
user.is_admin = false
|
|
|
|
|
# save with bang cause we want change in DB and not just in object instance
|
|
|
|
|
user.save!
|
|
|
|
|
end
|
|
|
|
|
|
2014-08-12 11:51:59 +03:00
|
|
|
factory :admin do
|
2016-03-09 21:34:07 +05:30
|
|
|
# admin factory needs its own after create block or else after create
|
|
|
|
|
# of user factory will override `is_admin` value.
|
|
|
|
|
after(:create) do |user|
|
|
|
|
|
user.is_admin = true
|
|
|
|
|
user.save!
|
|
|
|
|
end
|
2014-05-09 14:44:01 +02:00
|
|
|
end
|
2017-04-22 09:40:08 +03:00
|
|
|
|
2023-03-01 11:17:39 -08:00
|
|
|
factory :cfp_user do
|
|
|
|
|
transient do
|
|
|
|
|
resource { create(:resource) }
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
after :create do |user, evaluator|
|
|
|
|
|
user.add_role :cfp, evaluator.resource
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
2017-04-22 09:40:08 +03:00
|
|
|
trait :disabled do
|
2018-09-08 03:58:50 +02:00
|
|
|
is_disabled { true }
|
2017-04-22 09:40:08 +03:00
|
|
|
end
|
2014-04-09 01:32:47 +02:00
|
|
|
end
|
2017-01-09 12:27:11 -06:00
|
|
|
|
|
|
|
|
factory :user_xss, parent: :user do
|
2018-09-08 03:58:50 +02:00
|
|
|
biography { '<div id="divInjectedElement"></div>' }
|
2017-01-09 12:27:11 -06:00
|
|
|
end
|
|
|
|
|
|
2019-03-13 10:31:42 +01:00
|
|
|
factory :organizer, parent: :user do
|
|
|
|
|
transient do
|
|
|
|
|
resource { create(:resource) }
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
after(:create) do |user, evaluator|
|
|
|
|
|
user.roles << Role.find_or_create_by(name: 'organizer', resource: evaluator.resource)
|
|
|
|
|
user.save!
|
|
|
|
|
end
|
|
|
|
|
end
|
2014-04-09 01:32:47 +02:00
|
|
|
end
|