From e955d6dddc432a02698fe04b2e1159c94d1fe5cd Mon Sep 17 00:00:00 2001 From: Christian Cueni Date: Wed, 12 Jun 2024 10:14:48 +0200 Subject: [PATCH] wip: Add tests --- .../dashboard/tests/test_views.py | 23 +++++++++++++++++ server/vbv_lernwelt/dashboard/views.py | 2 +- server/vbv_lernwelt/feedback/export.py | 4 +-- .../feedback/tests/test_feedback_export.py | 25 +++++++++++++++++++ 4 files changed, 51 insertions(+), 3 deletions(-) diff --git a/server/vbv_lernwelt/dashboard/tests/test_views.py b/server/vbv_lernwelt/dashboard/tests/test_views.py index eb44dd98..0d7423bc 100644 --- a/server/vbv_lernwelt/dashboard/tests/test_views.py +++ b/server/vbv_lernwelt/dashboard/tests/test_views.py @@ -512,3 +512,26 @@ class ExportXlsTestCase(TestCase): trainer, allowed_csrs_ids, [circle.id] ) self.assertEqual([(TEST_COURSE_SESSION_ZURICH_ID, [])], allowed_circles) + + def test_supervisor_can_get_all_circles(self): + supervisor = User.objects.get(id=TEST_SUPERVISOR1_USER_ID) + circle_reisen = Circle.objects.get(slug="test-lehrgang-lp-circle-reisen") + circle_fahrzeug = Circle.objects.get(slug="test-lehrgang-lp-circle-fahrzeug") + requested_cs_ids = [TEST_COURSE_SESSION_ZURICH_ID] + + allowed_csrs_ids = _get_course_sessions_with_roles_for_user( + supervisor, self.ALLOWED_ROLES, requested_cs_ids + ) + + allowed_circles = _get_permitted_circles_ids_for_user_and_course_session( + supervisor, + allowed_csrs_ids, + [ + circle_fahrzeug.id, + circle_reisen.id, + ], + ) + self.assertEqual( + [(TEST_COURSE_SESSION_ZURICH_ID, [circle_fahrzeug.id, circle_reisen.id])], + allowed_circles, + ) diff --git a/server/vbv_lernwelt/dashboard/views.py b/server/vbv_lernwelt/dashboard/views.py index afa67e80..f9aa54ec 100644 --- a/server/vbv_lernwelt/dashboard/views.py +++ b/server/vbv_lernwelt/dashboard/views.py @@ -617,7 +617,7 @@ def _get_permitted_circles_ids_for_user_and_course_session( allowed_circles_for_sessions = [] for cswr in user_course_sessions_with_roles: if "SUPERVISOR" in cswr.roles: - allowed_circles_for_sessions.append(requested_circle_ids) + allowed_circles_for_sessions.append((cswr.id, requested_circle_ids)) else: course_session_users = CourseSessionUser.objects.filter( course_session=cswr.id, diff --git a/server/vbv_lernwelt/feedback/export.py b/server/vbv_lernwelt/feedback/export.py index 7917949a..cd4ec5af 100644 --- a/server/vbv_lernwelt/feedback/export.py +++ b/server/vbv_lernwelt/feedback/export.py @@ -86,8 +86,8 @@ def export_feedback_with_circle_restriction( for course_session_with_circles in course_sessions_with_circles: feedback_unordered = feedback_unordered | FeedbackResponse.objects.filter( - course_session_id__in=course_session_with_circles[0], - circle__in=course_session_with_circles[1], + course_session_id=course_session_with_circles[0], + circle_id__in=course_session_with_circles[1], submitted=True, ) diff --git a/server/vbv_lernwelt/feedback/tests/test_feedback_export.py b/server/vbv_lernwelt/feedback/tests/test_feedback_export.py index 8857c292..c24a7f93 100644 --- a/server/vbv_lernwelt/feedback/tests/test_feedback_export.py +++ b/server/vbv_lernwelt/feedback/tests/test_feedback_export.py @@ -9,6 +9,7 @@ from vbv_lernwelt.core.models import User from vbv_lernwelt.course.creators.test_course import create_test_course from vbv_lernwelt.course.models import CourseSession from vbv_lernwelt.course_session.tests.test_attendance_export import ExportBaseTestCase +from vbv_lernwelt.feedback.export import export_feedback_with_circle_restriction from vbv_lernwelt.feedback.factories import FeedbackResponseFactory from vbv_lernwelt.feedback.models import FeedbackResponse from vbv_lernwelt.feedback.services import export_feedback @@ -159,6 +160,30 @@ class FeedbackExportTestCase(ExportBaseTestCase): wb.active = wb["Reisen"] self._check_export(wb, self.expected_data_reisen, 2, 12) + def test_export_feedback_with_cs_circle_pairs(self): + cs_circle_pairs = [ + ( + self.course_session_be.id, + [self.circle_fahrzeug.id, self.circle_reisen.id], + ), + ( + self.course_session_zh.id, + [self.circle_reisen.id, self.circle_fahrzeug.id], + ), + ] + export_data = io.BytesIO( + export_feedback_with_circle_restriction(cs_circle_pairs, save_as_file=False) + ) + wb = load_workbook(export_data) + self.assertEqual(len(wb.sheetnames), 2) + self.assertEqual(wb.sheetnames[0], "Fahrzeug") + self.assertEqual(wb.sheetnames[1], "Reisen") + + self._check_export(wb, self.expected_data_fahrzeug, 3, 12) + + wb.active = wb["Reisen"] + self._check_export(wb, self.expected_data_reisen, 2, 12) + def test_does_not_include_unsubmitted_feedback(self): feedback = FeedbackResponse.objects.get( circle=self.circle_reisen,