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

102 lines
3.3 KiB
Python

from graphene_django.utils import GraphQLTestCase
from vbv_lernwelt.course.models import CourseSessionUser
from vbv_lernwelt.course.services import mark_course_completion
from vbv_lernwelt.dashboard.tests.graphql.utils import (
add_course_session_user,
create_circle,
create_course,
create_course_session,
create_performance_criteria_page,
create_user,
)
class DashboardCompetenceTestCase(GraphQLTestCase):
GRAPHQL_URL = "/server/graphql/"
def test_competence(self):
# GIVEN
course, course_page = create_course("Test Course")
course_session = create_course_session(course=course, title="Test Bern 2022 a")
# TODO: Give this guy the right permissions, once we have them ;)
supervisor = create_user("supervisor")
member_one = create_user("member one")
add_course_session_user(
course_session=course_session,
user=member_one,
role=CourseSessionUser.Role.MEMBER,
)
member_two = create_user("member two")
add_course_session_user(
course_session=course_session,
user=member_two,
role=CourseSessionUser.Role.MEMBER,
)
circle, _ = create_circle(title="Test Circle", course_page=course_page)
pc = create_performance_criteria_page(
course=course, course_page=course_page, circle=circle
)
mark_course_completion(
page=pc,
user=member_one,
course_session=course_session,
completion_status="SUCCESS",
)
mark_course_completion(
page=pc,
user=member_two,
course_session=course_session,
completion_status="FAIL",
)
self.client.force_login(supervisor)
query = f"""query($course_id: ID!) {{
course_statistics(course_id: $course_id) {{
course_id
competences {{
performances {{
course_session_id
generation
circle_id
success_count
fail_count
}}
summary {{
success_total
fail_total
}}
}}
}}
}}
"""
variables = {"course_id": str(course.id)}
# WHEN
response = self.query(query, variables=variables)
# THEN
self.assertResponseNoErrors(response)
competences = response.json()["data"]["course_statistics"][0]["competences"]
performances = competences["performances"]
self.assertEqual(performances[0]["success_count"], 1)
self.assertEqual(performances[0]["fail_count"], 1)
self.assertEqual(performances[0]["circle_id"], str(circle.id))
self.assertEqual(performances[0]["course_session_id"], str(course_session.id))
self.assertEqual(performances[0]["generation"], "2023")
summary = competences["summary"]
self.assertEqual(summary["success_total"], 1)
self.assertEqual(summary["fail_total"], 1)