from django.test import TestCase from vbv_lernwelt.course.creators.test_utils import ( add_course_session_group_supervisor, add_course_session_user, create_course, create_course_session, create_course_session_group, create_user, ) from vbv_lernwelt.course.models import CourseSessionUser from vbv_lernwelt.dashboard.views import get_course_sessions_with_roles_for_user from vbv_lernwelt.learning_mentor.models import LearningMentor class GetCourseSessionsForUserTestCase(TestCase): def setUp(self): self.course, _ = create_course("Test Course") self.course_session = create_course_session( course=self.course, title="Test Session" ) def test_participant_get_sessions(self): # participant gets all his sessions marked with role "MEMBER" participant = create_user("participant") add_course_session_user( self.course_session, participant, role=CourseSessionUser.Role.MEMBER, ) # WHEN sessions = get_course_sessions_with_roles_for_user(participant) # THEN self.assertEqual(len(sessions), 1) self.assertEqual(sessions[0].title, "Test Session") self.assertSetEqual(sessions[0].roles, {"MEMBER"}) def test_trainer_get_sessions(self): # GIVEN # trainer gets all his sessions marked with role "EXPERT" trainer = create_user("trainer") add_course_session_user( self.course_session, trainer, role=CourseSessionUser.Role.EXPERT, ) # WHEN sessions = get_course_sessions_with_roles_for_user(trainer) # THEN self.assertEqual(len(sessions), 1) self.assertEqual(sessions[0].title, "Test Session") self.assertSetEqual(sessions[0].roles, {"EXPERT"}) def test_supervisor_get_sessions(self): supervisor = create_user("supervisor") group = create_course_session_group(course_session=self.course_session) add_course_session_group_supervisor(group=group, user=supervisor) sessions = get_course_sessions_with_roles_for_user(supervisor) # THEN self.assertEqual(len(sessions), 1) self.assertEqual(sessions[0].title, "Test Session") self.assertEqual(sessions[0].roles, {"SUPERVISOR"}) def test_learning_mentor_get_sessions(self): mentor = create_user("mentor") LearningMentor.objects.create(mentor=mentor, course_session=self.course_session) participant = create_user("participant") add_course_session_user( self.course_session, participant, role=CourseSessionUser.Role.MEMBER, ) sessions = get_course_sessions_with_roles_for_user(mentor) # THEN self.assertEqual(len(sessions), 1) self.assertEqual(sessions[0].title, "Test Session") self.assertEqual(sessions[0].roles, {"LEARNING_MENTOR"})