97 lines
3.1 KiB
Python
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,
|
|
)
|