From dc6c645c467ea5a8a533340acb1065cd5476c195 Mon Sep 17 00:00:00 2001 From: Christian Cueni Date: Mon, 15 Apr 2024 16:37:07 +0200 Subject: [PATCH] Add Trainer statistics tests --- .../vbv_lernwelt/dashboard/graphql/queries.py | 3 +- .../tests/graphql/test_assignment.py | 116 ++++++++++++++++++ 2 files changed, 118 insertions(+), 1 deletion(-) diff --git a/server/vbv_lernwelt/dashboard/graphql/queries.py b/server/vbv_lernwelt/dashboard/graphql/queries.py index 925216c9..b0896860 100644 --- a/server/vbv_lernwelt/dashboard/graphql/queries.py +++ b/server/vbv_lernwelt/dashboard/graphql/queries.py @@ -73,7 +73,8 @@ class DashboardQuery(graphene.ObjectType): coursesessionuser__role=CourseSessionUser.Role.EXPERT, ).values_list("id", flat=True) setattr(info.context, "circle_ids", list(circle_ids)) - # get trainer courses & circles + + # todo: if course_session_ids and circles are empty return none or 404 or 401 # return None diff --git a/server/vbv_lernwelt/dashboard/tests/graphql/test_assignment.py b/server/vbv_lernwelt/dashboard/tests/graphql/test_assignment.py index 35d6b764..a3c53ae2 100644 --- a/server/vbv_lernwelt/dashboard/tests/graphql/test_assignment.py +++ b/server/vbv_lernwelt/dashboard/tests/graphql/test_assignment.py @@ -318,6 +318,122 @@ class AssignmentTestCase(GraphQLTestCase): self.assertEqual(assignment_3_metrics["average_passed"], 100) +class ExpertAssignmentTestCase(AssignmentTestCase): + def setUp(self): + self.course, self.course_page = create_course("Test Course") + self.course_session = create_course_session(course=self.course, title=":)") + course_session = create_course_session(course=self.course, title=":(") + self.circle, _ = create_circle(title="Circle", course_page=self.course_page) + circle, _ = create_circle(title="Other Circle", course_page=self.course_page) + + create_course_session_group(course_session=self.course_session) + + self.m1 = create_user("member_1") + add_course_session_user( + course_session=self.course_session, + user=self.m1, + role=CourseSessionUser.Role.MEMBER, + ) + + self.m2 = create_user("member_2") + add_course_session_user( + course_session=self.course_session, + user=self.m2, + role=CourseSessionUser.Role.MEMBER, + ) + + self.m3 = create_user("member_3") + add_course_session_user( + course_session=self.course_session, + user=self.m3, + role=CourseSessionUser.Role.MEMBER, + ) + + self.e1 = create_user("expert_1") + csu = add_course_session_user( + course_session=self.course_session, + user=self.e1, + role=CourseSessionUser.Role.EXPERT, + ) + csu.expert.add(self.circle) + + m4 = create_user("member_4") + add_course_session_user( + course_session=course_session, + user=m4, + role=CourseSessionUser.Role.MEMBER, + ) + + m5 = create_user("member_5") + add_course_session_user( + course_session=course_session, + user=m5, + role=CourseSessionUser.Role.MEMBER, + ) + + # assignments in the other course session should not be included + assignment_1, _ = mix_assignment_cocktail( + deadline_at=datetime(1990, 4, 1), + assignment_type=AssignmentType.CASEWORK, + course_session=course_session, + circle=self.circle, + add_competence_certificate=True, + ) + + assignment_2, _ = mix_assignment_cocktail( + deadline_at=datetime(2000, 4, 1), + assignment_type=AssignmentType.EDONIQ_TEST, + course_session=course_session, + circle=self.circle, + add_competence_certificate=True, + ) + + create_assignment_completion( + user=m4, + assignment=assignment_1, + course_session=course_session, + has_passed=True, + ) + + create_assignment_completion( + user=m5, + assignment=assignment_2, + course_session=course_session, + ) + + # assignments in the same course session, but in a different circle. Should not be included + assignment_3, _ = mix_assignment_cocktail( + deadline_at=datetime(1990, 4, 1), + assignment_type=AssignmentType.CASEWORK, + course_session=self.course_session, + circle=circle, + add_competence_certificate=True, + ) + + assignment_4, _ = mix_assignment_cocktail( + deadline_at=datetime(2000, 4, 1), + assignment_type=AssignmentType.EDONIQ_TEST, + course_session=self.course_session, + circle=circle, + add_competence_certificate=True, + ) + + create_assignment_completion( + user=self.m1, + assignment=assignment_1, + course_session=self.course_session, + has_passed=True, + ) + + create_assignment_completion( + user=self.m1, + assignment=assignment_2, + course_session=self.course_session, + ) + + self.client.force_login(self.e1) + + def mix_assignment_cocktail( assignment_type: AssignmentType, course_session: CourseSession,