Add mentor stats test

This commit is contained in:
Christian Cueni 2024-04-11 10:43:10 +02:00
parent 373703813c
commit 9721464161
2 changed files with 98 additions and 36 deletions

View File

@ -0,0 +1,77 @@
from graphene_django.utils import GraphQLTestCase
from vbv_lernwelt.assignment.models import (
AssignmentCompletion,
AssignmentCompletionStatus,
)
from vbv_lernwelt.course.creators.test_utils import add_course_session_user, create_user
from vbv_lernwelt.course.models import CourseSessionUser
from vbv_lernwelt.dashboard.tests.test_views import BaseMentorAssignmentTestCase
from vbv_lernwelt.learning_mentor.models import LearningMentor
class MentorStatisticsTestCase(BaseMentorAssignmentTestCase, GraphQLTestCase):
GRAPHQL_URL = "/server/graphql/"
def setUp(self):
super().setUp()
self.course.configuration.is_vv = True
self.course.configuration.save()
self.mentor = create_user("mentor")
self.lm = LearningMentor.objects.create(
mentor=self.mentor, course_session=self.course_session
)
self.participants = [create_user(f"participant{i}") for i in range(4)]
def test_assignment_statistics(self):
# WHEN
has_lb = [True, True, True, False]
has_passed = [True, False, True, False]
for i in range(4):
csu = add_course_session_user(
self.course_session,
self.participants[i],
role=CourseSessionUser.Role.MEMBER,
)
if has_lb[i]:
self.lm.participants.add(csu)
AssignmentCompletion.objects.create(
course_session=self.course_session,
assignment_user=self.participants[i],
evaluation_user=self.mentor if has_lb[i] else None,
assignment=self.assignment,
completion_status=AssignmentCompletionStatus.EVALUATION_SUBMITTED.value,
evaluation_passed=has_passed[i],
)
# THEN
# WHEN
query = f"""query ($courseId: ID!) {{
mentor_course_statistics(course_id: $courseId) {{
course_session_selection_ids
user_selection_ids
assignments {{
_id
summary {{
_id
completed_count
average_passed
total_passed
total_failed
}}
}}
}}
}}"""
# THEN
variables = {"courseId": str(self.course.id)}
self.client.force_login(self.mentor)
response = self.query(query, variables=variables)
self.assertResponseNoErrors(response)
metrics = response.json()["data"]["mentor_course_statistics"]["assignments"][
"summary"
]
self.assertEqual(metrics["total_passed"], 2)
self.assertEqual(metrics["total_failed"], 1)

View File

@ -1,10 +1,12 @@
from django.test import TestCase
from vbv_lernwelt.assignment.models import (
Assignment,
AssignmentCompletion,
AssignmentCompletionStatus,
)
from vbv_lernwelt.assignment.tests.assignment_factories import AssignmentFactory
from vbv_lernwelt.core.create_default_users import create_default_users
from vbv_lernwelt.course.creators.test_course import create_test_course
from vbv_lernwelt.course.creators.test_utils import (
add_course_session_group_supervisor,
add_course_session_user,
@ -13,7 +15,7 @@ from vbv_lernwelt.course.creators.test_utils import (
create_course_session_group,
create_user,
)
from vbv_lernwelt.course.models import CourseCategory, CoursePage, CourseSessionUser
from vbv_lernwelt.course.models import Course, CourseSession, CourseSessionUser
from vbv_lernwelt.dashboard.views import (
_get_mentee_count,
_get_mentor_open_tasks_count,
@ -21,12 +23,7 @@ from vbv_lernwelt.dashboard.views import (
get_course_sessions_with_roles_for_user,
)
from vbv_lernwelt.learning_mentor.models import LearningMentor
from vbv_lernwelt.learnpath.tests.learning_path_factories import (
CircleFactory,
LearningPathFactory,
LearningSequenceFactory,
LearningUnitFactory,
)
from vbv_lernwelt.learnpath.models import LearningUnit
from vbv_lernwelt.self_evaluation_feedback.models import SelfEvaluationFeedback
@ -245,6 +242,7 @@ class GetMenteeCountTestCase(TestCase):
)
def test_get_mentee_count(self):
# GIVEN
participants_with_mentor = [create_user(f"participant{i}") for i in range(2)]
participant = create_user("participant")
mentor = create_user("mentor")
@ -252,6 +250,7 @@ class GetMenteeCountTestCase(TestCase):
mentor=mentor, course_session=self.course_session
)
# WHEN
for p in participants_with_mentor:
csu = add_course_session_user(
self.course_session,
@ -266,42 +265,27 @@ class GetMenteeCountTestCase(TestCase):
role=CourseSessionUser.Role.MEMBER,
)
# THEN
count = _get_mentee_count(str(self.course.id), mentor)
self.assertEqual(count, 2)
class GetMentorOpenTasksTestCase(TestCase):
class BaseMentorAssignmentTestCase(TestCase):
def setUp(self):
self.course, _ = create_course("Test Course")
self.course_session = create_course_session(
course=self.course, title="Test Session"
)
course_page = CoursePage.objects.get(course_id=self.course.id)
CourseCategory.objects.get_or_create(
course=self.course, title="Allgemein", general=True
)
lp = LearningPathFactory(
title="Lernpfad",
parent=course_page,
)
circle = CircleFactory(
title="Kickoff",
parent=lp,
description="bla".strip(),
goals="A goal",
)
LearningSequenceFactory(
title="Vorbereitung", parent=circle, icon="it-icon-ls-start"
)
self.lu = LearningUnitFactory(
title="Vorbereitung", title_hidden=True, parent=circle
)
create_default_users()
create_test_course(include_vv=False, with_sessions=True)
self.course = Course.objects.first()
self.course_session = CourseSession.objects.first()
self.lu = LearningUnit.objects.first()
self.assignment = Assignment.objects.first()
class GetMentorOpenTasksTestCase(BaseMentorAssignmentTestCase):
def setUp(self):
super().setUp()
self.course.configuration.is_vv = True
self.course.configuration.save()
self.assignment = AssignmentFactory(parent=course_page)
self.mentor = create_user("mentor")
self.lm = LearningMentor.objects.create(
mentor=self.mentor, course_session=self.course_session
@ -329,6 +313,7 @@ class GetMentorOpenTasksTestCase(TestCase):
self.assertEqual(count, 0)
def test_get_vv_count_when_assignment_evaluated(self):
# GIVEN
csu = add_course_session_user(
self.course_session,
self.participants[0],
@ -425,7 +410,7 @@ class GetMentorOpenTasksTestCase(TestCase):
)
def test_get_vv_count_without_lm(self):
csu = add_course_session_user(
add_course_session_user(
self.course_session,
self.participants[0],
role=CourseSessionUser.Role.MEMBER,