From 8ab17f9370eb5d7ac75130de819be77592ceb696 Mon Sep 17 00:00:00 2001 From: Daniel Egger Date: Wed, 28 Sep 2022 15:11:08 +0200 Subject: [PATCH] Readd completion code --- server/config/urls.py | 4 +- .../course/creators/test_course.py | 1 - server/vbv_lernwelt/course/tests/test_api.py | 41 +++++++++++++------ server/vbv_lernwelt/course/views.py | 4 +- 4 files changed, 34 insertions(+), 16 deletions(-) diff --git a/server/config/urls.py b/server/config/urls.py index 52432057..3ff38459 100644 --- a/server/config/urls.py +++ b/server/config/urls.py @@ -15,7 +15,7 @@ from vbv_lernwelt.core.views import ( rate_limit_exceeded_view, permission_denied_view, check_rate_limit, cypress_reset_view, vue_home, vue_login, me_user_view, vue_logout, generate_web_component_icons, ) -from vbv_lernwelt.course.views import page_api_view +from vbv_lernwelt.course.views import page_api_view, request_course_completion, mark_course_completion def raise_example_error(request): @@ -47,6 +47,8 @@ urlpatterns = [ # course path(r"api/course/page//", page_api_view, name="page_api_view"), + path(r"api/course/completion/mark/", mark_course_completion, name="mark_course_completion"), + path(r"api/course/completion//", request_course_completion, name="request_course_completion"), # completion # path(r"api/completion/circle//", request_circle_completion, name="request_circle_completion"), diff --git a/server/vbv_lernwelt/course/creators/test_course.py b/server/vbv_lernwelt/course/creators/test_course.py index 14cc32e0..47f0256c 100644 --- a/server/vbv_lernwelt/course/creators/test_course.py +++ b/server/vbv_lernwelt/course/creators/test_course.py @@ -2,7 +2,6 @@ import wagtail_factories from django.conf import settings from wagtail.models import Site -from vbv_lernwelt.core.create_default_users import create_default_users from vbv_lernwelt.core.tests.helpers import create_locales_for_wagtail from vbv_lernwelt.course.consts import COURSE_TEST_ID from vbv_lernwelt.course.factories import CoursePageFactory diff --git a/server/vbv_lernwelt/course/tests/test_api.py b/server/vbv_lernwelt/course/tests/test_api.py index ef010070..af738b70 100644 --- a/server/vbv_lernwelt/course/tests/test_api.py +++ b/server/vbv_lernwelt/course/tests/test_api.py @@ -4,25 +4,24 @@ from rest_framework.test import APITestCase from vbv_lernwelt.core.create_default_users import create_default_users from vbv_lernwelt.core.models import User -from vbv_lernwelt.core.tests.helpers import create_locales_for_wagtail +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 CourseCompletion from vbv_lernwelt.learnpath.models import LearningContent class CourseCompletionApiTestCase(APITestCase): def setUp(self) -> None: - create_locales_for_wagtail() create_default_users() - create_simple_test_learning_path() + create_test_course() self.user = User.objects.get(username='student') self.client.login(username='student', password='test') def test_completeLearningContent_works(self): - learning_content = LearningContent.objects.get(title='Einleitung Circle "Unit-Test Circle"') + learning_content = LearningContent.objects.get(title='Fachcheck Fahrzeug') learning_content_key = str(learning_content.translation_key) - circle_key = str(learning_content.get_parent().translation_key) - mark_url = f'/api/completion/circle/mark/' - print(mark_url) + mark_url = f'/api/course/completion/mark/' response = self.client.post(mark_url, { 'page_key': learning_content_key, @@ -33,16 +32,34 @@ class CourseCompletionApiTestCase(APITestCase): self.assertEqual(response.status_code, 200) self.assertEqual(len(response_json), 1) self.assertEqual(response_json[0]['page_key'], learning_content_key) - self.assertEqual(response_json[0]['circle_key'], circle_key) - self.assertTrue(response_json[0]['completed']) + self.assertEqual(response_json[0]['completion_status'], 'success') + + db_entry = CourseCompletion.objects.get(user=self.user, course_id=COURSE_TEST_ID, page_key=learning_content_key) + self.assertEqual(db_entry.completion_status, 'success') # test getting the circle data - response = self.client.get(f'/api/completion/circle/{circle_key}/') + response = self.client.get(f'/api/course/completion/{COURSE_TEST_ID}/') + print(response.status_code) response_json = response.json() print(json.dumps(response.json(), indent=2)) self.assertEqual(response.status_code, 200) self.assertEqual(len(response_json), 1) self.assertEqual(response_json[0]['page_key'], learning_content_key) - self.assertEqual(response_json[0]['circle_key'], circle_key) - self.assertTrue(response_json[0]['completed']) + self.assertTrue(response_json[0]['completion_status'], 'success') + + # test with "fail" + response = self.client.post(mark_url, { + 'page_key': learning_content_key, + 'completion_status': 'fail', + }) + + response_json = response.json() + self.assertEqual(response.status_code, 200) + self.assertEqual(len(response_json), 1) + self.assertEqual(response_json[0]['page_key'], learning_content_key) + self.assertEqual(response_json[0]['completion_status'], 'fail') + + db_entry = CourseCompletion.objects.get(user=self.user, course_id=COURSE_TEST_ID, page_key=learning_content_key) + self.assertEqual(db_entry.completion_status, 'fail') + diff --git a/server/vbv_lernwelt/course/views.py b/server/vbv_lernwelt/course/views.py index 6b0bc67f..16e4e5da 100644 --- a/server/vbv_lernwelt/course/views.py +++ b/server/vbv_lernwelt/course/views.py @@ -25,7 +25,7 @@ def page_api_view(request, slug): @api_view(['GET']) def request_course_completion(request, course_id): response_data = CourseCompletionSerializer( - CourseCompletion.objects.filter(user=request.user, circle_id=course_id), + CourseCompletion.objects.filter(user=request.user, course_id=course_id), many=True, ).data @@ -52,7 +52,7 @@ def mark_course_completion(request): cc.save() response_data = CourseCompletionSerializer( - CourseCompletion.objects.filter(user=request.user, circle_id=course_id), + CourseCompletion.objects.filter(user=request.user, course_id=course.id), many=True, ).data