vbv/server/vbv_lernwelt/dashboard/tests/graphql/test_dashboard.py

147 lines
4.9 KiB
Python

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))