Readd completion code

This commit is contained in:
Daniel Egger 2022-09-28 15:11:08 +02:00
parent b5804c2696
commit 8ab17f9370
4 changed files with 34 additions and 16 deletions

View File

@ -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/<slug:slug>/", 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/<course_id>/", request_course_completion, name="request_course_completion"),
# completion
# path(r"api/completion/circle/<uuid:circle_key>/", request_circle_completion, name="request_circle_completion"),

View File

@ -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

View File

@ -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')

View File

@ -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