from graphene_django.utils import GraphQLTestCase from vbv_lernwelt.course.models import CourseSessionUser from vbv_lernwelt.dashboard.tests.graphql.utils import ( add_course_session_user, create_circle, create_course, create_course_session, create_user, ) class DashboardTestCase(GraphQLTestCase): GRAPHQL_URL = "/server/graphql/" def test_course_dashboard(self): # GIVEN supervisor = create_user("supervisor") course, course_page = create_course("Test Course") course_session = create_course_session(course=course, title="Test Bern 2022 a") add_course_session_user( course_session=course_session, user=supervisor, role=CourseSessionUser.Role.SESSION_SUPERVISOR, ) some_course, _ = create_course("Other Course") some_course_session = create_course_session( course=some_course, title="Here is go study" ) add_course_session_user( course_session=some_course_session, user=supervisor, role=CourseSessionUser.Role.MEMBER, ) circle, _ = create_circle(title="Test Circle", course_page=course_page) # expert expert = create_user("expert") expert_session_user = add_course_session_user( course_session=some_course_session, user=expert, role=CourseSessionUser.Role.EXPERT, ) expert_session_user.expert.add(circle) self.client.force_login(supervisor) query = f""" query {{ course_dashboard {{ course_id course_title course_session_properties {{ sessions {{ session_id session_title }} generations circles {{ circle_id circle_title experts }} }} }} }} """ # WHEN response = self.query(query) # THEN self.assertResponseNoErrors(response) course_dashboard = response.json()["data"]["course_dashboard"] self.assertEqual(len(course_dashboard), 1) self.assertEqual(course_dashboard[0]["course_id"], str(course.id)) self.assertEqual(course_dashboard[0]["course_title"], str(course.title)) session_properties = course_dashboard[0]["course_session_properties"] self.assertEqual(len(session_properties["sessions"]), 1) self.assertEqual( session_properties["sessions"][0]["session_id"], str(course_session.id) ) self.assertEqual( session_properties["sessions"][0]["session_title"], str(course_session.title), ) self.assertEqual(len(session_properties["generations"]), 1) self.assertEqual( session_properties["generations"][0], str(course_session.generation) ) self.assertEqual(len(session_properties["circles"]), 1) self.assertEqual(session_properties["circles"][0]["circle_id"], str(circle.id)) self.assertEqual( session_properties["circles"][0]["circle_title"], str(circle.title) ) self.assertEqual(session_properties["circles"][0]["experts"], ["Test Expert"]) def test_course_dashboard_id(self): # GIVEN supervisor = create_user("supervisor") course_1, _ = create_course("Test Course 1") course_2, _ = create_course("Test Course 2") course_session_1 = create_course_session( course=course_1, title="Test Course 1 Session" ) course_session_2 = create_course_session( course=course_2, title="Test Course 2 Session" ) add_course_session_user( course_session=course_session_1, user=supervisor, role=CourseSessionUser.Role.SESSION_SUPERVISOR, ) add_course_session_user( course_session=course_session_2, user=supervisor, role=CourseSessionUser.Role.SESSION_SUPERVISOR, ) self.client.force_login(supervisor) query = f"""query($course_id: ID) {{ course_dashboard(course_id: $course_id) {{ course_id }} }} """ variables = {"course_id": str(course_2.id)} # WHEN response = self.query(query, variables=variables) # THEN self.assertResponseNoErrors(response) course_dashboard = response.json()["data"]["course_dashboard"] self.assertEqual(len(course_dashboard), 1) self.assertEqual(course_dashboard[0]["course_id"], str(course_2.id))