Add count tests
This commit is contained in:
parent
84f803ebf1
commit
373703813c
|
|
@ -1,5 +1,10 @@
|
|||
from django.test import TestCase
|
||||
|
||||
from vbv_lernwelt.assignment.models import (
|
||||
AssignmentCompletion,
|
||||
AssignmentCompletionStatus,
|
||||
)
|
||||
from vbv_lernwelt.assignment.tests.assignment_factories import AssignmentFactory
|
||||
from vbv_lernwelt.course.creators.test_utils import (
|
||||
add_course_session_group_supervisor,
|
||||
add_course_session_user,
|
||||
|
|
@ -8,9 +13,21 @@ from vbv_lernwelt.course.creators.test_utils import (
|
|||
create_course_session_group,
|
||||
create_user,
|
||||
)
|
||||
from vbv_lernwelt.course.models import CourseSessionUser
|
||||
from vbv_lernwelt.dashboard.views import get_course_sessions_with_roles_for_user, get_course_config
|
||||
from vbv_lernwelt.course.models import CourseCategory, CoursePage, CourseSessionUser
|
||||
from vbv_lernwelt.dashboard.views import (
|
||||
_get_mentee_count,
|
||||
_get_mentor_open_tasks_count,
|
||||
get_course_config,
|
||||
get_course_sessions_with_roles_for_user,
|
||||
)
|
||||
from vbv_lernwelt.learning_mentor.models import LearningMentor
|
||||
from vbv_lernwelt.learnpath.tests.learning_path_factories import (
|
||||
CircleFactory,
|
||||
LearningPathFactory,
|
||||
LearningSequenceFactory,
|
||||
LearningUnitFactory,
|
||||
)
|
||||
from vbv_lernwelt.self_evaluation_feedback.models import SelfEvaluationFeedback
|
||||
|
||||
|
||||
class GetCourseSessionsForUserTestCase(TestCase):
|
||||
|
|
@ -105,7 +122,9 @@ class GetDashboardConfig(TestCase):
|
|||
self.assertEqual(course_configs[0].is_vv, is_vv)
|
||||
self.assertEqual(course_configs[0].is_mentor, is_mentor)
|
||||
self.assertEqual(course_configs[0].has_preview, has_preview)
|
||||
self.assertEqual(course_configs[0].session_to_continue_id, str(self.course_session.id))
|
||||
self.assertEqual(
|
||||
course_configs[0].session_to_continue_id, str(self.course_session.id)
|
||||
)
|
||||
self.assertEqual(course_configs[0].role_key, role)
|
||||
self.assertEqual(course_configs[0].widgets, widgets)
|
||||
|
||||
|
|
@ -119,8 +138,19 @@ class GetDashboardConfig(TestCase):
|
|||
self.course.configuration.is_uk = True
|
||||
self.course.configuration.save()
|
||||
|
||||
self._test_config(user=participant, role="Member", is_uk=True, is_vv=False, is_mentor=False, has_preview=False,
|
||||
widgets=['ProgressWidget', 'CompetenceWidget', 'CompetenceCertificateWidget'])
|
||||
self._test_config(
|
||||
user=participant,
|
||||
role="Member",
|
||||
is_uk=True,
|
||||
is_vv=False,
|
||||
is_mentor=False,
|
||||
has_preview=False,
|
||||
widgets=[
|
||||
"ProgressWidget",
|
||||
"CompetenceWidget",
|
||||
"CompetenceCertificateWidget",
|
||||
],
|
||||
)
|
||||
|
||||
def test_participant_vv_get_config(self):
|
||||
participant = create_user("participant")
|
||||
|
|
@ -132,8 +162,15 @@ class GetDashboardConfig(TestCase):
|
|||
self.course.configuration.is_vv = True
|
||||
self.course.configuration.save()
|
||||
|
||||
self._test_config(user=participant, role="Member", is_uk=False, is_vv=True, is_mentor=False, has_preview=False,
|
||||
widgets=['ProgressWidget', 'CompetenceWidget'])
|
||||
self._test_config(
|
||||
user=participant,
|
||||
role="Member",
|
||||
is_uk=False,
|
||||
is_vv=True,
|
||||
is_mentor=False,
|
||||
has_preview=False,
|
||||
widgets=["ProgressWidget", "CompetenceWidget"],
|
||||
)
|
||||
|
||||
def test_mentor_uk_get_config(self):
|
||||
# GIVEN
|
||||
|
|
@ -143,8 +180,15 @@ class GetDashboardConfig(TestCase):
|
|||
self.course.configuration.is_uk = True
|
||||
self.course.configuration.save()
|
||||
|
||||
self._test_config(user=mentor, role="MentorUK", is_uk=True, is_vv=False, is_mentor=True, has_preview=True,
|
||||
widgets=['MentorPersonWidget', 'MentorCompetenceWidget'])
|
||||
self._test_config(
|
||||
user=mentor,
|
||||
role="MentorUK",
|
||||
is_uk=True,
|
||||
is_vv=False,
|
||||
is_mentor=True,
|
||||
has_preview=True,
|
||||
widgets=["MentorPersonWidget", "MentorCompetenceWidget"],
|
||||
)
|
||||
|
||||
def test_mentor_vv_get_config(self):
|
||||
# GIVEN
|
||||
|
|
@ -154,8 +198,15 @@ class GetDashboardConfig(TestCase):
|
|||
self.course.configuration.is_vv = True
|
||||
self.course.configuration.save()
|
||||
|
||||
self._test_config(user=mentor, role="MentorVV", is_uk=False, is_vv=True, is_mentor=True, has_preview=True,
|
||||
widgets=['MentorPersonWidget', 'MentorTasksWidget'])
|
||||
self._test_config(
|
||||
user=mentor,
|
||||
role="MentorVV",
|
||||
is_uk=False,
|
||||
is_vv=True,
|
||||
is_mentor=True,
|
||||
has_preview=True,
|
||||
widgets=["MentorPersonWidget", "MentorTasksWidget"],
|
||||
)
|
||||
|
||||
def test_participant_as_mentor_vv_get_config(self):
|
||||
# GIVEN
|
||||
|
|
@ -170,5 +221,226 @@ class GetDashboardConfig(TestCase):
|
|||
self.course.configuration.is_vv = True
|
||||
self.course.configuration.save()
|
||||
|
||||
self._test_config(user=mentor, role="Member", is_uk=False, is_vv=True, is_mentor=True, has_preview=False,
|
||||
widgets=['ProgressWidget', 'CompetenceWidget', 'MentorPersonWidget', 'MentorTasksWidget'])
|
||||
self._test_config(
|
||||
user=mentor,
|
||||
role="Member",
|
||||
is_uk=False,
|
||||
is_vv=True,
|
||||
is_mentor=True,
|
||||
has_preview=False,
|
||||
widgets=[
|
||||
"ProgressWidget",
|
||||
"CompetenceWidget",
|
||||
"MentorPersonWidget",
|
||||
"MentorTasksWidget",
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
class GetMenteeCountTestCase(TestCase):
|
||||
def setUp(self):
|
||||
self.course, _ = create_course("Test Course")
|
||||
self.course_session = create_course_session(
|
||||
course=self.course, title="Test Session"
|
||||
)
|
||||
|
||||
def test_get_mentee_count(self):
|
||||
participants_with_mentor = [create_user(f"participant{i}") for i in range(2)]
|
||||
participant = create_user("participant")
|
||||
mentor = create_user("mentor")
|
||||
lm = LearningMentor.objects.create(
|
||||
mentor=mentor, course_session=self.course_session
|
||||
)
|
||||
|
||||
for p in participants_with_mentor:
|
||||
csu = add_course_session_user(
|
||||
self.course_session,
|
||||
p,
|
||||
role=CourseSessionUser.Role.MEMBER,
|
||||
)
|
||||
lm.participants.add(csu)
|
||||
|
||||
add_course_session_user(
|
||||
self.course_session,
|
||||
participant,
|
||||
role=CourseSessionUser.Role.MEMBER,
|
||||
)
|
||||
|
||||
count = _get_mentee_count(str(self.course.id), mentor)
|
||||
self.assertEqual(count, 2)
|
||||
|
||||
|
||||
class GetMentorOpenTasksTestCase(TestCase):
|
||||
def setUp(self):
|
||||
self.course, _ = create_course("Test Course")
|
||||
self.course_session = create_course_session(
|
||||
course=self.course, title="Test Session"
|
||||
)
|
||||
course_page = CoursePage.objects.get(course_id=self.course.id)
|
||||
CourseCategory.objects.get_or_create(
|
||||
course=self.course, title="Allgemein", general=True
|
||||
)
|
||||
lp = LearningPathFactory(
|
||||
title="Lernpfad",
|
||||
parent=course_page,
|
||||
)
|
||||
circle = CircleFactory(
|
||||
title="Kickoff",
|
||||
parent=lp,
|
||||
description="bla".strip(),
|
||||
goals="A goal",
|
||||
)
|
||||
LearningSequenceFactory(
|
||||
title="Vorbereitung", parent=circle, icon="it-icon-ls-start"
|
||||
)
|
||||
self.lu = LearningUnitFactory(
|
||||
title="Vorbereitung", title_hidden=True, parent=circle
|
||||
)
|
||||
|
||||
self.course.configuration.is_vv = True
|
||||
self.course.configuration.save()
|
||||
|
||||
self.assignment = AssignmentFactory(parent=course_page)
|
||||
|
||||
self.mentor = create_user("mentor")
|
||||
self.lm = LearningMentor.objects.create(
|
||||
mentor=self.mentor, course_session=self.course_session
|
||||
)
|
||||
self.participants = [create_user(f"participant{i}") for i in range(2)]
|
||||
|
||||
def create_and_test_count(
|
||||
self, assignment_user, evaluation_user, mentor, completion_status, count
|
||||
):
|
||||
AssignmentCompletion.objects.create(
|
||||
course_session=self.course_session,
|
||||
assignment_user=assignment_user,
|
||||
assignment=self.assignment,
|
||||
completion_status=completion_status,
|
||||
evaluation_user=evaluation_user,
|
||||
)
|
||||
self.assertEqual(
|
||||
_get_mentor_open_tasks_count(str(self.course.id), mentor), count
|
||||
)
|
||||
|
||||
def test_get_uk_count(self):
|
||||
self.course.configuration.is_uk = True
|
||||
self.course.configuration.save()
|
||||
count = _get_mentor_open_tasks_count(str(self.course.id), self.mentor)
|
||||
self.assertEqual(count, 0)
|
||||
|
||||
def test_get_vv_count_when_assignment_evaluated(self):
|
||||
csu = add_course_session_user(
|
||||
self.course_session,
|
||||
self.participants[0],
|
||||
role=CourseSessionUser.Role.MEMBER,
|
||||
)
|
||||
self.lm.participants.add(csu)
|
||||
|
||||
add_course_session_user(
|
||||
self.course_session,
|
||||
self.participants[1],
|
||||
role=CourseSessionUser.Role.MEMBER,
|
||||
)
|
||||
|
||||
AssignmentCompletion.objects.create(
|
||||
course_session=self.course_session,
|
||||
assignment_user=self.participants[0],
|
||||
evaluation_user=self.participants[0],
|
||||
assignment=self.assignment,
|
||||
completion_status=AssignmentCompletionStatus.SUBMITTED.value,
|
||||
)
|
||||
|
||||
self.create_and_test_count(
|
||||
assignment_user=self.participants[0],
|
||||
mentor=self.mentor,
|
||||
evaluation_user=self.mentor,
|
||||
completion_status=AssignmentCompletionStatus.EVALUATION_SUBMITTED.value,
|
||||
count=0,
|
||||
)
|
||||
|
||||
def test_get_vv_count_when_assignment_submitted(self):
|
||||
csu = add_course_session_user(
|
||||
self.course_session,
|
||||
self.participants[0],
|
||||
role=CourseSessionUser.Role.MEMBER,
|
||||
)
|
||||
self.lm.participants.add(csu)
|
||||
|
||||
add_course_session_user(
|
||||
self.course_session,
|
||||
self.participants[1],
|
||||
role=CourseSessionUser.Role.MEMBER,
|
||||
)
|
||||
|
||||
self.create_and_test_count(
|
||||
assignment_user=self.participants[0],
|
||||
mentor=self.mentor,
|
||||
evaluation_user=self.mentor,
|
||||
completion_status=AssignmentCompletionStatus.SUBMITTED.value,
|
||||
count=1,
|
||||
)
|
||||
|
||||
def test_get_vv_count_with_feedback_not_submitted(self):
|
||||
csu = add_course_session_user(
|
||||
self.course_session,
|
||||
self.participants[0],
|
||||
role=CourseSessionUser.Role.MEMBER,
|
||||
)
|
||||
self.lm.participants.add(csu)
|
||||
|
||||
SelfEvaluationFeedback.objects.create(
|
||||
feedback_submitted=False,
|
||||
feedback_requester_user=self.participants[0],
|
||||
feedback_provider_user=self.mentor,
|
||||
learning_unit=self.lu,
|
||||
)
|
||||
self.create_and_test_count(
|
||||
assignment_user=self.participants[0],
|
||||
mentor=self.mentor,
|
||||
evaluation_user=self.mentor,
|
||||
completion_status=AssignmentCompletionStatus.SUBMITTED.value,
|
||||
count=2,
|
||||
)
|
||||
|
||||
def test_get_vv_count_with_feedback_submitted(self):
|
||||
csu = add_course_session_user(
|
||||
self.course_session,
|
||||
self.participants[0],
|
||||
role=CourseSessionUser.Role.MEMBER,
|
||||
)
|
||||
self.lm.participants.add(csu)
|
||||
|
||||
SelfEvaluationFeedback.objects.create(
|
||||
feedback_submitted=True,
|
||||
feedback_requester_user=self.participants[0],
|
||||
feedback_provider_user=self.mentor,
|
||||
learning_unit=self.lu,
|
||||
)
|
||||
self.create_and_test_count(
|
||||
assignment_user=self.participants[0],
|
||||
mentor=self.mentor,
|
||||
evaluation_user=self.mentor,
|
||||
completion_status=AssignmentCompletionStatus.SUBMITTED.value,
|
||||
count=1,
|
||||
)
|
||||
|
||||
def test_get_vv_count_without_lm(self):
|
||||
csu = add_course_session_user(
|
||||
self.course_session,
|
||||
self.participants[0],
|
||||
role=CourseSessionUser.Role.MEMBER,
|
||||
)
|
||||
|
||||
SelfEvaluationFeedback.objects.create(
|
||||
feedback_submitted=False,
|
||||
feedback_requester_user=self.participants[0],
|
||||
feedback_provider_user=self.mentor,
|
||||
learning_unit=self.lu,
|
||||
)
|
||||
self.create_and_test_count(
|
||||
assignment_user=self.participants[0],
|
||||
mentor=self.mentor,
|
||||
evaluation_user=self.mentor,
|
||||
completion_status=AssignmentCompletionStatus.SUBMITTED.value,
|
||||
count=0,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -356,13 +356,9 @@ def get_dashboard_config(request):
|
|||
@api_view(["GET"])
|
||||
def get_mentee_count(request, course_id: str):
|
||||
try:
|
||||
count = CourseSessionUser.objects.filter(
|
||||
participants__mentor=request.user, course_session__course__id=course_id
|
||||
).count()
|
||||
|
||||
return Response(
|
||||
status=200,
|
||||
data={"mentee_count": count},
|
||||
data={"mentee_count": _get_mentee_count(course_id, request.user)}, # noqa
|
||||
)
|
||||
except PermissionDenied as e:
|
||||
raise e
|
||||
|
|
@ -371,34 +367,46 @@ def get_mentee_count(request, course_id: str):
|
|||
return Response({"error": str(e)}, status=404)
|
||||
|
||||
|
||||
def _get_mentee_count(course_id: str, mentor: User) -> int:
|
||||
return CourseSessionUser.objects.filter(
|
||||
participants__mentor=mentor, course_session__course__id=course_id
|
||||
).count()
|
||||
|
||||
|
||||
@api_view(["GET"])
|
||||
def get_mentor_open_tasks_count(request, course_id: str):
|
||||
try:
|
||||
open_assigment_count = 0
|
||||
open_feedback_count = 0
|
||||
|
||||
course_configuration = CourseConfiguration.objects.get(course_id=course_id)
|
||||
|
||||
if course_configuration.is_vv:
|
||||
open_assigment_count = AssignmentCompletion.objects.filter(
|
||||
course_session__course__id=course_id,
|
||||
completion_status=AssignmentCompletionStatus.SUBMITTED.value,
|
||||
evaluation_user=request.user, # noqa
|
||||
assignment_user__coursesessionuser__participants__mentor=request.user,
|
||||
).count()
|
||||
|
||||
open_feedback_count = SelfEvaluationFeedback.objects.filter(
|
||||
feedback_provider_user=request.user, # noqa
|
||||
feedback_requester_user__coursesessionuser__participants__mentor=request.user,
|
||||
feedback_submitted=False,
|
||||
).count()
|
||||
|
||||
return Response(
|
||||
status=200,
|
||||
data={"open_task_count": open_assigment_count + open_feedback_count},
|
||||
data={
|
||||
"open_task_count": _get_mentor_open_tasks_count(course_id, request.user)
|
||||
}, # noqa
|
||||
)
|
||||
except PermissionDenied as e:
|
||||
raise e
|
||||
except Exception as e:
|
||||
logger.error(e, exc_info=True)
|
||||
return Response({"error": str(e)}, status=404)
|
||||
|
||||
|
||||
def _get_mentor_open_tasks_count(course_id: str, mentor: User) -> int:
|
||||
open_assigment_count = 0
|
||||
open_feedback_count = 0
|
||||
|
||||
course_configuration = CourseConfiguration.objects.get(course_id=course_id)
|
||||
|
||||
if course_configuration.is_vv:
|
||||
open_assigment_count = AssignmentCompletion.objects.filter(
|
||||
course_session__course__id=course_id,
|
||||
completion_status=AssignmentCompletionStatus.SUBMITTED.value,
|
||||
evaluation_user=mentor, # noqa
|
||||
assignment_user__coursesessionuser__participants__mentor=mentor,
|
||||
).count()
|
||||
|
||||
open_feedback_count = SelfEvaluationFeedback.objects.filter(
|
||||
feedback_provider_user=mentor, # noqa
|
||||
feedback_requester_user__coursesessionuser__participants__mentor=mentor,
|
||||
feedback_submitted=False,
|
||||
).count()
|
||||
|
||||
return open_assigment_count + open_feedback_count
|
||||
|
|
|
|||
Loading…
Reference in New Issue