Redefine user roles with their role in a study group

This commit is contained in:
Sebastian Serth
2022-09-20 16:19:04 +02:00
committed by Sebastian Serth
parent 04ed45ea73
commit 9c9f45ff77
12 changed files with 90 additions and 44 deletions

View File

@ -7,5 +7,9 @@ FactoryBot.define do
external_id { SecureRandom.uuid }
generated_user_name
singleton_external_user
member_of_study_group
transient do
teacher_in_study_group { false }
end
end
end

View File

@ -7,8 +7,12 @@ FactoryBot.define do
email { 'admin@example.org' }
generated_user_name
password { 'admin' }
role { 'admin' }
platform_admin { true }
singleton_internal_user
member_of_study_group
transient do
teacher_in_study_group { true }
end
end
factory :teacher, class: 'InternalUser' do
@ -17,8 +21,12 @@ FactoryBot.define do
generated_email
generated_user_name
password { 'teacher' }
role { 'teacher' }
platform_admin { false }
singleton_internal_user
member_of_study_group
transient do
teacher_in_study_group { true }
end
end
factory :learner, class: 'InternalUser' do
@ -27,8 +35,12 @@ FactoryBot.define do
generated_email
generated_user_name
password { 'learner' }
role { 'learner' }
platform_admin { false }
singleton_internal_user
member_of_study_group
transient do
teacher_in_study_group { false }
end
end
trait :activated_user do

View File

@ -14,6 +14,7 @@ FactoryBot.define do
after(:create) do |rfc|
rfc.file = rfc.submission.files.first
Comment.create(file: rfc.file, user: rfc.user, row: 1, text: "comment for rfc #{rfc.question}")
rfc.submission.study_group_id = rfc.user.current_study_group_id
end
end
end

View File

@ -20,4 +20,17 @@ FactoryBot.define do
initialize_with { klass.where(email: email).first_or_create }
end
end
trait :member_of_study_group do
after(:create) do |user, evaluator|
# Do not create a study group if already passed
if user.study_groups.blank?
study_group = create(:study_group)
user.study_groups << study_group
end
user.study_group_memberships.update(role: 'teacher') if evaluator.teacher_in_study_group
user.store_current_study_group_id(user.study_group_memberships.first)
end
end
end