mirror of
https://github.com/openSUSE/osem.git
synced 2026-08-13 19:54:02 +00:00
Enforce non-admin attribute of user factory
Change in other specs to match the new factory setup.
This commit is contained in:
parent
b18e302224
commit
0619eb7963
2 changed files with 28 additions and 3 deletions
|
|
@ -1,4 +1,18 @@
|
|||
# Read about factories at https://github.com/thoughtbot/factory_girl
|
||||
|
||||
# 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)`
|
||||
# For an admin user, use: `create(:admin)
|
||||
|
||||
FactoryGirl.define do
|
||||
factory :user do
|
||||
sequence(:email) { |n| "example#{n}@example.com" }
|
||||
|
|
@ -16,8 +30,19 @@ FactoryGirl.define do
|
|||
gravida.
|
||||
EOS
|
||||
|
||||
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
|
||||
|
||||
factory :admin do
|
||||
is_admin true
|
||||
# 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
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ require 'spec_helper'
|
|||
describe User do
|
||||
|
||||
# It is necessary to use bang version of let to build roles before user
|
||||
let!(:user_admin) { create(:user) }
|
||||
let!(:user_admin) { create(:admin) }
|
||||
let!(:conference) { create(:conference) }
|
||||
let!(:organizer_role) { Role.find_by(name: 'organizer', resource: conference) }
|
||||
let!(:cfp_role) { Role.find_by(name: 'cfp', resource: conference) }
|
||||
|
|
@ -59,7 +59,7 @@ describe User do
|
|||
deleted_user = create(:user, email: 'deleted@localhost.osem', name: 'User deleted')
|
||||
expect(deleted_user.is_admin).to be false
|
||||
|
||||
user_after_deleted = create(:user)
|
||||
user_after_deleted = create(:admin)
|
||||
expect(user_after_deleted.is_admin).to be true
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue