vbv/server/vbv_lernwelt/course/tests/test_update_course_profile.py

95 lines
3.3 KiB
Python

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)