From d0ef9bd5fde9948320b7f765722c7a15209493f2 Mon Sep 17 00:00:00 2001 From: Ramon Wenger Date: Mon, 29 Jul 2024 20:43:24 +0200 Subject: [PATCH] Add unit test for course profile update --- .../tests/test_update_course_profile.py | 94 +++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 server/vbv_lernwelt/course/tests/test_update_course_profile.py diff --git a/server/vbv_lernwelt/course/tests/test_update_course_profile.py b/server/vbv_lernwelt/course/tests/test_update_course_profile.py new file mode 100644 index 00000000..c0cd7a1f --- /dev/null +++ b/server/vbv_lernwelt/course/tests/test_update_course_profile.py @@ -0,0 +1,94 @@ +from django.test import RequestFactory, TestCase +from graphene.test import Client + +from vbv_lernwelt.core.admin import User +from vbv_lernwelt.core.create_default_users import create_default_users +from vbv_lernwelt.core.schema import schema +from vbv_lernwelt.course.management.commands.create_default_courses import ( + create_versicherungsvermittlerin_course, +) +from vbv_lernwelt.learnpath.creators import create_course_profiles + + +class CourseGraphQLTestCase(TestCase): + def setUp(self) -> None: + create_default_users() + create_course_profiles() + create_versicherungsvermittlerin_course() + user = User.objects.get(username="student-vv@eiger-versicherungen.ch") + request = RequestFactory().get("/") + request.user = user + self.client = Client(schema=schema, context_value=request) + + def test_query(self): + query = """ + query CourseQuery($slug: String!) { + course(slug: $slug){ + id + profiles + course_session_users { + id + __typename + chosen_profile + course_session { + id + } + } + } + } + """ + slug = "versicherungsvermittler-in" + variables = {"slug": slug} + result = self.client.execute(query, variables=variables) + + self.assertIsNone(result.get("errors")) + data = result.get("data") + course = data.get("course") + profiles = course.get("profiles") + self.assertEqual( + set(profiles), set(["nichtleben", "leben", "krankenzusatzversicherung"]) + ) + course_session_user = course.get("course_session_users")[0] + chosen_profile = course_session_user.get("chosen_profile") + + self.assertEqual(chosen_profile, "") + + mutation = """ + mutation UpdateCourseSessionProfile($input: CourseSessionProfileMutationInput!) { + update_course_session_profile(input: $input) { + clientMutationId + result { + __typename + ... on UpdateCourseProfileSuccess { + user { + id + chosen_profile + } + } + ... on UpdateCourseProfileError { + message + } + } + } + } + """ + + profile = "nichtleben" + input = {"course_profile": profile, "course_slug": slug} + + mutation_result = self.client.execute(mutation, variables={"input": input}) + + self.assertIsNone(mutation_result.get("errors")) + + second_query_result = self.client.execute(query, variables=variables) + + self.assertIsNone(second_query_result.get("errors")) + data = second_query_result.get("data") + course = data.get("course") + profiles = course.get("profiles") + self.assertEqual( + set(profiles), set(["nichtleben", "leben", "krankenzusatzversicherung"]) + ) + course_session_user = course.get("course_session_users")[0] + chosen_profile = course_session_user.get("chosen_profile") + self.assertEqual(chosen_profile, profile)