fix: filter out feedback

experts that might have submitted just for testing -> should not be
included in the feedback results / API
This commit is contained in:
Livio Bieri 2023-10-12 15:55:35 +02:00
parent 99508fec09
commit 500a376877
2 changed files with 13 additions and 4 deletions

View File

@ -3,7 +3,7 @@ from rest_framework.test import APITestCase
from vbv_lernwelt.core.create_default_users import create_default_users from vbv_lernwelt.core.create_default_users import create_default_users
from vbv_lernwelt.core.models import User from vbv_lernwelt.core.models import User
from vbv_lernwelt.course.creators.test_course import create_test_course from vbv_lernwelt.course.creators.test_course import create_test_course
from vbv_lernwelt.course.models import CourseSession, CourseSessionUser from vbv_lernwelt.course.models import CourseSession
from vbv_lernwelt.feedback.factories import FeedbackResponseFactory from vbv_lernwelt.feedback.factories import FeedbackResponseFactory
from vbv_lernwelt.feedback.models import FeedbackResponse from vbv_lernwelt.feedback.models import FeedbackResponse
from vbv_lernwelt.learnpath.models import Circle from vbv_lernwelt.learnpath.models import Circle
@ -54,7 +54,7 @@ class FeedbackNotificationTestCase(FeedbackBaseTestCase):
self.assertEqual(notification.course_session, self.course_session) self.assertEqual(notification.course_session, self.course_session)
def test_only_submitted_feedback_triggers_notification(self): def test_only_submitted_feedback_triggers_notification(self):
feedback = FeedbackResponse.objects.create( FeedbackResponse.objects.create(
circle=self.circle_basis, circle=self.circle_basis,
course_session=self.course_session, course_session=self.course_session,
feedback_user=self.student, feedback_user=self.student,
@ -79,10 +79,14 @@ class FeedbackRestApiTestCase(FeedbackBaseTestCase):
"course_negative_feedback": ["Maus", "Hase", "Fuchs"], "course_negative_feedback": ["Maus", "Hase", "Fuchs"],
} }
self.students = [ self.feedback_users = [
# MEMBERS of the course session
self.student, self.student,
User.objects.get(username="test-student2@example.com"), User.objects.get(username="test-student2@example.com"),
User.objects.get(username="test-student3@example.com"), User.objects.get(username="test-student3@example.com"),
# EXPERT has submitted feedback for "testing purposes"
# -> should be filtered out!
User.objects.get(username="test-trainer1@example.com"),
] ]
for i in range(3): for i in range(3):
@ -111,7 +115,7 @@ class FeedbackRestApiTestCase(FeedbackBaseTestCase):
"course_negative_feedback" "course_negative_feedback"
][i], ][i],
}, },
feedback_user=self.students[i], feedback_user=self.feedback_users[i],
submitted=True, submitted=True,
) )

View File

@ -5,6 +5,7 @@ from rest_framework.decorators import api_view
from rest_framework.exceptions import PermissionDenied from rest_framework.exceptions import PermissionDenied
from rest_framework.response import Response from rest_framework.response import Response
from vbv_lernwelt.course.models import CourseSessionUser
from vbv_lernwelt.course.permissions import is_course_session_expert from vbv_lernwelt.course.permissions import is_course_session_expert
from vbv_lernwelt.feedback.models import FeedbackResponse from vbv_lernwelt.feedback.models import FeedbackResponse
@ -57,6 +58,10 @@ def get_feedback_for_circle(request, course_session_id, circle_id):
course_session__id=course_session_id, course_session__id=course_session_id,
submitted=True, submitted=True,
circle_id=circle_id, circle_id=circle_id,
# filter out experts that might have submitted just for testing
feedback_user__in=CourseSessionUser.objects.filter(
course_session_id=course_session_id, role=CourseSessionUser.Role.MEMBER
).values_list("user", flat=True),
).order_by("created_at") ).order_by("created_at")
# I guess this is ok for the üK case # I guess this is ok for the üK case