From cda7ae07a82ba46e69f54eb6f1069d63b81e26ce Mon Sep 17 00:00:00 2001 From: Lorenz Padberg Date: Wed, 14 Jun 2023 15:44:16 +0200 Subject: [PATCH] Add duedate to API --- server/vbv_lernwelt/course/serializers.py | 9 +++++++++ .../course/tests/test_course_session_api.py | 3 +++ server/vbv_lernwelt/duedate/serializers.py | 9 +++++++++ .../duedate/tests/test_duedate_serializer.py | 15 +++++++++++++++ 4 files changed, 36 insertions(+) create mode 100644 server/vbv_lernwelt/duedate/serializers.py create mode 100644 server/vbv_lernwelt/duedate/tests/test_duedate_serializer.py diff --git a/server/vbv_lernwelt/course/serializers.py b/server/vbv_lernwelt/course/serializers.py index d92365fd..e5322181 100644 --- a/server/vbv_lernwelt/course/serializers.py +++ b/server/vbv_lernwelt/course/serializers.py @@ -7,6 +7,8 @@ from vbv_lernwelt.course.models import ( CourseCompletion, CourseSession, ) +from vbv_lernwelt.duedate.models import DueDate +from vbv_lernwelt.duedate.serializers import DueDateSerializer class CourseSerializer(serializers.ModelSerializer): @@ -50,6 +52,7 @@ class CourseSessionSerializer(serializers.ModelSerializer): competence_url = serializers.SerializerMethodField() media_library_url = serializers.SerializerMethodField() documents = serializers.SerializerMethodField() + duedates = serializers.SerializerMethodField() def get_course(self, obj): return CourseSerializer(obj.course).data @@ -75,6 +78,11 @@ class CourseSessionSerializer(serializers.ModelSerializer): ) return CircleDocumentSerializer(documents, many=True).data + def get_duedates(self, obj): + # TODO: Filter by user / userrole + duedates = DueDate.objects.filter(course_session=obj) + return DueDateSerializer(duedates, many=True).data + class Meta: model = CourseSession fields = [ @@ -94,6 +102,7 @@ class CourseSessionSerializer(serializers.ModelSerializer): "media_library_url", "course_url", "documents", + "duedates" ] diff --git a/server/vbv_lernwelt/course/tests/test_course_session_api.py b/server/vbv_lernwelt/course/tests/test_course_session_api.py index 17d3616c..56ebb988 100644 --- a/server/vbv_lernwelt/course/tests/test_course_session_api.py +++ b/server/vbv_lernwelt/course/tests/test_course_session_api.py @@ -7,6 +7,7 @@ from vbv_lernwelt.core.models import User from vbv_lernwelt.course.consts import COURSE_TEST_ID from vbv_lernwelt.course.creators.test_course import create_test_course from vbv_lernwelt.course.models import CourseSession, CourseSessionUser +from vbv_lernwelt.duedate.factories import DueDateFactory class CourseCompletionApiTestCase(APITestCase): @@ -20,6 +21,7 @@ class CourseCompletionApiTestCase(APITestCase): course_id=COURSE_TEST_ID, title="Test Lehrgang Session", ) + DueDateFactory(course_session=self.course_session) self.client.login(username="student", password="test") @@ -51,3 +53,4 @@ class CourseCompletionApiTestCase(APITestCase): print(json.dumps(response.json(), indent=4)) self.assertEqual(response.json()[0]["id"], self.course_session.id) + self.assertNotEquals(response.json()[0]["duedates"], []) diff --git a/server/vbv_lernwelt/duedate/serializers.py b/server/vbv_lernwelt/duedate/serializers.py new file mode 100644 index 00000000..d2219461 --- /dev/null +++ b/server/vbv_lernwelt/duedate/serializers.py @@ -0,0 +1,9 @@ +from rest_framework import serializers + +from vbv_lernwelt.duedate.models import DueDate + + +class DueDateSerializer(serializers.ModelSerializer): + class Meta: + model = DueDate + fields = '__all__' diff --git a/server/vbv_lernwelt/duedate/tests/test_duedate_serializer.py b/server/vbv_lernwelt/duedate/tests/test_duedate_serializer.py new file mode 100644 index 00000000..e9e4e027 --- /dev/null +++ b/server/vbv_lernwelt/duedate/tests/test_duedate_serializer.py @@ -0,0 +1,15 @@ +from django.test import TestCase + +from vbv_lernwelt.duedate.factories import DueDateFactory +from vbv_lernwelt.duedate.models import DueDate +from vbv_lernwelt.duedate.serializers import DueDateSerializer + + +class TestDueDatetSerializer(TestCase): + def test_duedate_serializer(self): + DueDateFactory() + assert DueDate.objects.count() == 1 + + duedates = DueDate.objects.all() + result = DueDateSerializer(duedates, many=True).data + assert result[0]['title'] == 'Prüfung Versicherungsvermittler/-in'