from django.test import TestCase from vbv_lernwelt.assignment.models import ( AssignmentCompletion, AssignmentCompletionStatus, AssignmentType, ) from vbv_lernwelt.course.creators.test_utils import ( create_assignment, create_circle, create_course, create_course_session, create_user, ) from vbv_lernwelt.learning_mentor.views import ( CompletionStatus, get_assignment_completions, ) class AttendanceServicesTestCase(TestCase): def setUp(self): self.user1 = create_user("Alpha") self.user2 = create_user("Beta") self.user3 = create_user("Kappa") self.user4 = create_user("Gamma") self.course, self.course_page = create_course("Test Course") self.course_session = create_course_session(course=self.course, title=":)") self.circle, _ = create_circle(title="Circle", course_page=self.course_page) self.assignment = create_assignment( course=self.course, assignment_type=AssignmentType.CASEWORK ) AssignmentCompletion.objects.create( assignment_user=self.user1, course_session=self.course_session, assignment=self.assignment, completion_status=AssignmentCompletionStatus.EVALUATION_SUBMITTED.value, ) AssignmentCompletion.objects.create( assignment_user=self.user2, course_session=self.course_session, assignment=self.assignment, completion_status=AssignmentCompletionStatus.SUBMITTED.value, ) AssignmentCompletion.objects.create( assignment_user=self.user3, course_session=self.course_session, assignment=self.assignment, completion_status=AssignmentCompletionStatus.IN_PROGRESS.value, ) def test_assignments(self): # GIVEN participants = [self.user1, self.user2, self.user3, self.user4] # WHEN results = get_assignment_completions( self.course_session, self.assignment, participants ) # THEN expected_order = ["Beta", "Alpha", "Gamma", "Kappa"] expected_statuses = { "Alpha": CompletionStatus.EVALUATED, # user1 "Beta": CompletionStatus.SUBMITTED, # user2 "Gamma": CompletionStatus.PENDING, # user4 (no AssignmentCompletion) "Kappa": CompletionStatus.PENDING, # user3 (IN_PROGRESS should be PENDING) } self.assertEqual(len(results), len(participants)) for i, result in enumerate(results): self.assertEqual(result.last_name, expected_order[i]) self.assertEqual(result.status, expected_statuses[result.last_name])