vbv/server/vbv_lernwelt/course_session/tests/test_graphql.py

97 lines
3.1 KiB
Python

import json
from graphene_django.utils.testing import GraphQLTestCase
from vbv_lernwelt.core.create_default_users import create_default_users
from vbv_lernwelt.core.models import User
from vbv_lernwelt.course.creators.test_course import create_test_course
from vbv_lernwelt.course.models import CourseSession
class AttendanceCourseUserMutationTestCase(GraphQLTestCase):
GRAPHQL_URL = "/server/graphql/"
def setUp(self):
create_default_users()
create_test_course(include_vv=False, with_sessions=True)
self.course_session = CourseSession.objects.get(title="Test Bern 2022 a")
self.attendance_course = (
self.course_session.coursesessionattendancecourse_set.first()
)
self.trainer = User.objects.get(username="test-trainer1@example.com")
self.client.force_login(self.trainer)
def test_simple_query(self):
response = self.query(
f"""
{{
course_session_attendance_course(id:{self.attendance_course.id}) {{
id
trainer
}}
}}
"""
)
content = json.loads(response.content)
self.assertResponseNoErrors(response)
self.assertEqual(
content["data"]["course_session_attendance_course"]["trainer"],
"Roland Grossenbacher, roland.grossenbacher@helvetia.ch",
)
def test_mutation_add_user_when_present(self):
student = User.objects.get(username="test-student1@example.com")
query = f"""
mutation {{
update_course_session_attendance_course_users(
id:{self.attendance_course.id},
attendance_user_list:[
{{user_id: "{student.id}", status: PRESENT}},
{{user_id: "3372836c-1c95-4721-881d-5342a60a3bfe", status: PRESENT}},
]
) {{
course_session_attendance_course {{
id
attendance_user_list {{
user_id
first_name
last_name
email
status
}}
}}
}}
}}
"""
print(query)
response = self.query(query)
self.assertResponseNoErrors(response)
data = json.loads(response.content)
self.maxDiff = None
self.assertDictEqual(
{
"data": {
"update_course_session_attendance_course_users": {
"course_session_attendance_course": {
"id": str(self.attendance_course.id),
"attendance_user_list": [
{
"user_id": str(student.id),
"first_name": student.first_name,
"last_name": student.last_name,
"email": student.email,
"status": "PRESENT",
}
],
}
}
}
},
data,
)