gitlab-org--gitlab-foss/spec/support/helpers/user_helpers.rb

33 lines
1.1 KiB
Ruby

# frozen_string_literal: true
module UserHelpers
def create_user_from_membership(target, membership)
generate_user_from_membership(:create, target, membership)
end
def build_user_from_membership(target, membership)
generate_user_from_membership(:build, target, membership)
end
private
# @param method [Symbol] FactoryBot methods :create, :build, :build_stubbed
# @param target [Project, Group] membership target
# @param membership [Symbol] accepts the membership levels :guest, :reporter...
# and pseudo levels :non_member and :anonymous
def generate_user_from_membership(method, target, membership)
case membership
when :anonymous
nil
when :non_member
FactoryBot.send(method, :user, name: membership)
when :admin
FactoryBot.send(method, :user, :admin, name: 'admin')
else
# `.tap` can only be used with `create`, and if we want to `build` a user,
# it is more performant than creating a `project_member` or `group_member`
# with a built user
create(:user, name: membership).tap { |u| target.add_member(u, membership) }
end
end
end