113 lines
4.1 KiB
Python
113 lines
4.1 KiB
Python
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_assignment_learning_content,
|
|
create_circle,
|
|
create_course,
|
|
create_course_session,
|
|
create_course_session_assignment,
|
|
create_user,
|
|
)
|
|
from vbv_lernwelt.learning_mentor.content.praxis_assignment import (
|
|
get_assignment_completions,
|
|
get_praxis_assignments,
|
|
)
|
|
from vbv_lernwelt.learning_mentor.entities import CompletionStatus
|
|
|
|
|
|
class AttendanceServicesTestCase(TestCase):
|
|
def setUp(self):
|
|
self.mentor = create_user("Mentor")
|
|
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.PRAXIS_ASSIGNMENT
|
|
)
|
|
|
|
AssignmentCompletion.objects.create(
|
|
assignment_user=self.user1,
|
|
course_session=self.course_session,
|
|
assignment=self.assignment,
|
|
completion_status=AssignmentCompletionStatus.EVALUATION_SUBMITTED.value,
|
|
evaluation_user=self.mentor,
|
|
)
|
|
AssignmentCompletion.objects.create(
|
|
assignment_user=self.user2,
|
|
course_session=self.course_session,
|
|
assignment=self.assignment,
|
|
completion_status=AssignmentCompletionStatus.SUBMITTED.value,
|
|
evaluation_user=self.mentor,
|
|
)
|
|
AssignmentCompletion.objects.create(
|
|
assignment_user=self.user3,
|
|
course_session=self.course_session,
|
|
assignment=self.assignment,
|
|
completion_status=AssignmentCompletionStatus.IN_PROGRESS.value,
|
|
evaluation_user=self.mentor,
|
|
)
|
|
|
|
def test_assignment_completions(self):
|
|
# GIVEN
|
|
participants = [self.user1, self.user2, self.user3, self.user4]
|
|
|
|
# WHEN
|
|
results = get_assignment_completions(
|
|
course_session=self.course_session,
|
|
assignment=self.assignment,
|
|
participants=participants,
|
|
evaluation_user=self.mentor,
|
|
)
|
|
|
|
# THEN
|
|
expected_order = ["Beta", "Alpha", "Gamma", "Kappa"]
|
|
expected_statuses = {
|
|
"Alpha": CompletionStatus.EVALUATED, # user1
|
|
"Beta": CompletionStatus.SUBMITTED, # user2
|
|
"Gamma": CompletionStatus.UNKNOWN, # user4 (no AssignmentCompletion)
|
|
"Kappa": CompletionStatus.UNKNOWN, # 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])
|
|
self.assertEqual(
|
|
result.url,
|
|
f"/course/test-lehrgang/cockpit/assignment/{self.assignment.id}/{result.user_id}",
|
|
)
|
|
|
|
def test_praxis_assignment_status(self):
|
|
# GIVEN
|
|
lca = create_assignment_learning_content(self.circle, self.assignment)
|
|
create_course_session_assignment(
|
|
course_session=self.course_session, learning_content_assignment=lca
|
|
)
|
|
participants = [self.user1, self.user2, self.user3, self.user4]
|
|
|
|
# WHEN
|
|
assignments, circle_ids = get_praxis_assignments(
|
|
course_session=self.course_session,
|
|
participants=participants,
|
|
evaluation_user=self.mentor,
|
|
)
|
|
|
|
# THEN
|
|
assignment = assignments[0]
|
|
self.assertEqual(assignment.pending_evaluations, 1)
|
|
self.assertEqual(assignment.title, "Dummy Assignment (PRAXIS_ASSIGNMENT)")
|
|
self.assertEqual(assignment.circle_id, self.circle.id)
|
|
self.assertEqual(list(circle_ids)[0], self.circle.id)
|