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

81 lines
3.3 KiB
Python

from django.test import TestCase
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, CourseCompletion
from vbv_lernwelt.course.services import mark_course_completion
from vbv_lernwelt.course_session.models import CourseSessionAttendanceCourse
from vbv_lernwelt.course_session.services.attendance import update_attendance_list
class AttendanceServicesTestCase(TestCase):
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_updateAttendanceList_withSingleUserId_findsDetailsAndStoresResult(self):
student = User.objects.get(username="test-student1@example.com")
update_attendance_list(self.attendance_course, [{"user_id": student.id}])
attendance_course = CourseSessionAttendanceCourse.objects.get(
id=self.attendance_course.id
)
self.assertEqual(
attendance_course.attendance_user_list[0]["user_id"], student.id
)
self.assertEqual(
attendance_course.attendance_user_list,
[
{
"email": "test-student1@example.com",
"user_id": -21,
"last_name": "Student1",
"first_name": "Test",
}
],
)
def test_updateAttendanceList_willUpdateUserCourseCompletion(self):
student = User.objects.get(username="test-student1@example.com")
update_attendance_list(self.attendance_course, [{"user_id": student.id}])
self.assertEqual(CourseCompletion.objects.count(), 1)
cc = CourseCompletion.objects.first()
self.assertEqual(cc.user, student)
self.assertEqual(cc.completion_status, "success")
self.assertEqual(
cc.page_key, self.attendance_course.learning_content.translation_key
)
self.assertEqual(
cc.page_slug, "test-lehrgang-lp-circle-fahrzeug-lc-präsenzkurs-fahrzeug"
)
def test_updateAttendanceList_withRemovedUser_willUpdateUserCourseCompletion(self):
student = User.objects.get(username="test-student1@example.com")
mark_course_completion(
page_key=self.attendance_course.learning_content.translation_key,
user=student,
course_session=self.course_session,
completion_status="success",
)
update_attendance_list(self.attendance_course, [])
self.assertEqual(CourseCompletion.objects.count(), 1)
cc = CourseCompletion.objects.first()
self.assertEqual(cc.user, student)
self.assertEqual(cc.completion_status, "success")
self.assertEqual(
cc.page_key, self.attendance_course.learning_content.translation_key
)
self.assertEqual(
cc.page_slug, "test-lehrgang-lp-circle-fahrzeug-lc-präsenzkurs-fahrzeug"
)