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( """ { course_session_attendance_course(id:1) { 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:1, attendance_user_list:[ {{user_id: {student.id}}}, {{user_id: "123123123"}} ] ) {{ course_session_attendance_course {{ id attendance_user_list {{ user_id first_name last_name email }} }} }} }} """ 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, } ], } } } }, data, )