feat: expose detail_url // counts

This commit is contained in:
Livio Bieri 2024-02-20 15:22:26 +01:00
parent a1d069186c
commit cc27ed0dd3
2 changed files with 26 additions and 12 deletions

View File

@ -308,9 +308,9 @@ class SelfEvaluationFeedbackAPI(APITestCase):
result = response.data["results"][0]
self_assessment = result["self_assessment"]
self.assertEqual(self_assessment["pass"], 1)
self.assertEqual(self_assessment["fail"], 1)
self.assertEqual(self_assessment["unknown"], 1)
self.assertEqual(self_assessment["counts"]["pass"], 1)
self.assertEqual(self_assessment["counts"]["fail"], 1)
self.assertEqual(self_assessment["counts"]["unknown"], 1)
feedback_assessment = result["feedback_assessment"]
self.assertEqual(feedback_assessment["counts"]["pass"], 1)
@ -370,9 +370,10 @@ class SelfEvaluationFeedbackAPI(APITestCase):
self.assertEqual(response.status_code, 200)
result = response.data["results"][0]
self.assertEqual(result["self_assessment"]["pass"], 1)
self.assertEqual(result["self_assessment"]["fail"], 0)
self.assertEqual(result["self_assessment"]["unknown"], 0)
counts = result["self_assessment"]["counts"]
self.assertEqual(counts["pass"], 1)
self.assertEqual(counts["fail"], 0)
self.assertEqual(counts["unknown"], 0)
def test_feedbacks_not_started(self):
"""Case: Learning unit with no completion status and no feedback"""
@ -405,9 +406,9 @@ class SelfEvaluationFeedbackAPI(APITestCase):
self.assertEqual(response.status_code, 200)
result = response.data["results"][0]
self.assertEqual(result["self_assessment"]["pass"], 0)
self.assertEqual(result["self_assessment"]["fail"], 0)
self.assertEqual(result["self_assessment"]["unknown"], 1)
self.assertEqual(result["self_assessment"]["counts"]["pass"], 0)
self.assertEqual(result["self_assessment"]["counts"]["fail"], 0)
self.assertEqual(result["self_assessment"]["counts"]["unknown"], 1)
def test_feedbacks_metadata(self):
# GIVEN
@ -442,6 +443,7 @@ class SelfEvaluationFeedbackAPI(APITestCase):
self.assertEqual(result["id"], learning_unit.id)
self.assertEqual(result["circle_id"], self.circle.id)
self.assertEqual(result["circle_title"], self.circle.title)
self.assertEqual(result["detail_url"], learning_unit.get_evaluate_url())
circles = response.data["circles"]
self.assertEqual(len(circles), 1)

View File

@ -1,3 +1,4 @@
import structlog
from django.shortcuts import get_object_or_404
from rest_framework.decorators import api_view, permission_classes
from rest_framework.exceptions import PermissionDenied
@ -27,6 +28,8 @@ from vbv_lernwelt.self_evaluation_feedback.utils import (
get_self_evaluation_feedback_counts,
)
logger = structlog.get_logger(__name__)
@api_view(["POST"])
@permission_classes([IsAuthenticated])
@ -105,6 +108,12 @@ def get_self_evaluation_feedbacks_as_requester(request, course_session_id: int):
feedback_user=LearningUnitPerformanceFeedbackType.MENTOR_FEEDBACK.value,
course_category__course=course_session.course,
):
# this is not a problem in real life, but in the test environment
# we have a lot of learning units without self assessment criteria
# -> just skip those learning units
if len(learning_unit.performancecriteria_set.all()) == 0:
continue
circle = learning_unit.get_parent().specific
circle_ids.add(circle.id)
@ -138,13 +147,16 @@ def get_self_evaluation_feedbacks_as_requester(request, course_session_id: int):
{
"id": learning_unit.id,
"title": learning_unit.title,
"detail_url": learning_unit.get_evaluate_url(),
"circle_id": circle.id,
"circle_title": circle.title,
"feedback_assessment": feedback_assessment,
"self_assessment": {
"pass": self_assessment_counts.pass_count,
"fail": self_assessment_counts.fail_count,
"unknown": self_assessment_counts.unknown_count,
"counts": {
"pass": self_assessment_counts.pass_count,
"fail": self_assessment_counts.fail_count,
"unknown": self_assessment_counts.unknown_count,
}
},
}
)