136 lines
3.9 KiB
Python
136 lines
3.9 KiB
Python
from django.test import TestCase
|
|
|
|
from vbv_lernwelt.course.creators.test_utils import (
|
|
add_course_session_user,
|
|
create_course,
|
|
create_course_session,
|
|
create_user,
|
|
)
|
|
from vbv_lernwelt.course.models import CourseSessionUser
|
|
from vbv_lernwelt.course_session_group.models import CourseSessionGroup
|
|
from vbv_lernwelt.iam.permissions import has_role_in_course, is_learning_mentor_for_user
|
|
from vbv_lernwelt.learning_mentor.models import AgentParticipantRelation
|
|
|
|
|
|
class RoleTestCase(TestCase):
|
|
def setUp(self):
|
|
self.course, _ = create_course("Test Course")
|
|
self.course_session = create_course_session(
|
|
course=self.course, title="Test Session"
|
|
)
|
|
|
|
self.user = create_user("user")
|
|
|
|
def test_has_role_regional(self):
|
|
# GIVEN
|
|
csg = CourseSessionGroup.objects.create(name="Test Group", course=self.course)
|
|
csg.supervisor.add(self.user)
|
|
|
|
# WHEN
|
|
has_role = has_role_in_course(user=self.user, course=self.course)
|
|
|
|
# THEN
|
|
self.assertTrue(has_role)
|
|
|
|
def test_has_role_course_session(self):
|
|
# GIVEN
|
|
add_course_session_user(
|
|
self.course_session,
|
|
self.user,
|
|
role=CourseSessionUser.Role.MEMBER,
|
|
)
|
|
|
|
# WHEN
|
|
has_role = has_role_in_course(user=self.user, course=self.course)
|
|
|
|
# THEN
|
|
self.assertTrue(has_role)
|
|
|
|
def test_has_role_mentor(self):
|
|
# GIVEN
|
|
participant = create_user("participant")
|
|
csu = add_course_session_user(
|
|
self.course_session,
|
|
participant,
|
|
role=CourseSessionUser.Role.MEMBER,
|
|
)
|
|
AgentParticipantRelation.objects.create(
|
|
agent=self.user, participant=csu, role="LEARNING_MENTOR"
|
|
)
|
|
|
|
# WHEN
|
|
has_role = has_role_in_course(user=self.user, course=self.course)
|
|
|
|
# THEN
|
|
self.assertTrue(has_role)
|
|
|
|
def test_is_user_mentor(self):
|
|
# GIVEN
|
|
member = create_user("member")
|
|
mentor = create_user("mentor")
|
|
|
|
course, course_page = create_course("Test Course")
|
|
course_session = create_course_session(course=course, title=":)")
|
|
|
|
member_csu = add_course_session_user(
|
|
course_session=course_session,
|
|
user=member,
|
|
role=CourseSessionUser.Role.MEMBER,
|
|
)
|
|
|
|
AgentParticipantRelation.objects.create(
|
|
agent=mentor, participant=member_csu, role="LEARNING_MENTOR"
|
|
)
|
|
|
|
# WHEN
|
|
is_mentor = is_learning_mentor_for_user(
|
|
mentor=mentor,
|
|
participant_user_id=member.id,
|
|
course_session_id=course_session.id,
|
|
)
|
|
|
|
# THEN
|
|
self.assertTrue(is_mentor)
|
|
|
|
def test_not_is_user_mentor(self):
|
|
# GIVEN
|
|
member = create_user("member")
|
|
wanna_be_mentor = create_user("wanna_be_mentor")
|
|
|
|
course, course_page = create_course("Test Course")
|
|
course_session = create_course_session(course=course, title=":)")
|
|
|
|
add_course_session_user(
|
|
course_session=course_session,
|
|
user=member,
|
|
role=CourseSessionUser.Role.MEMBER,
|
|
)
|
|
|
|
# WHEN
|
|
is_mentor = is_learning_mentor_for_user(
|
|
mentor=wanna_be_mentor,
|
|
participant_user_id=member.id,
|
|
course_session_id=course_session.id,
|
|
)
|
|
|
|
# THEN
|
|
self.assertFalse(is_mentor)
|
|
|
|
def test_no_role(self):
|
|
# GIVEN
|
|
other_course, _ = create_course("Other Test Course")
|
|
other_course_session = create_course_session(
|
|
course=other_course, title="Other Test Session"
|
|
)
|
|
add_course_session_user(
|
|
other_course_session,
|
|
self.user,
|
|
role=CourseSessionUser.Role.MEMBER,
|
|
)
|
|
|
|
# WHEN
|
|
has_role = has_role_in_course(user=self.user, course=self.course)
|
|
|
|
# THEN
|
|
self.assertFalse(has_role)
|