Readd completion code
This commit is contained in:
parent
b5804c2696
commit
8ab17f9370
|
|
@ -15,7 +15,7 @@ from vbv_lernwelt.core.views import (
|
||||||
rate_limit_exceeded_view,
|
rate_limit_exceeded_view,
|
||||||
permission_denied_view,
|
permission_denied_view,
|
||||||
check_rate_limit, cypress_reset_view, vue_home, vue_login, me_user_view, vue_logout, generate_web_component_icons, )
|
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):
|
def raise_example_error(request):
|
||||||
|
|
@ -47,6 +47,8 @@ urlpatterns = [
|
||||||
|
|
||||||
# course
|
# course
|
||||||
path(r"api/course/page/<slug:slug>/", page_api_view, name="page_api_view"),
|
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
|
# completion
|
||||||
# path(r"api/completion/circle/<uuid:circle_key>/", request_circle_completion, name="request_circle_completion"),
|
# path(r"api/completion/circle/<uuid:circle_key>/", request_circle_completion, name="request_circle_completion"),
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ import wagtail_factories
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from wagtail.models import Site
|
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.core.tests.helpers import create_locales_for_wagtail
|
||||||
from vbv_lernwelt.course.consts import COURSE_TEST_ID
|
from vbv_lernwelt.course.consts import COURSE_TEST_ID
|
||||||
from vbv_lernwelt.course.factories import CoursePageFactory
|
from vbv_lernwelt.course.factories import CoursePageFactory
|
||||||
|
|
|
||||||
|
|
@ -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.create_default_users import create_default_users
|
||||||
from vbv_lernwelt.core.models import User
|
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
|
from vbv_lernwelt.learnpath.models import LearningContent
|
||||||
|
|
||||||
|
|
||||||
class CourseCompletionApiTestCase(APITestCase):
|
class CourseCompletionApiTestCase(APITestCase):
|
||||||
def setUp(self) -> None:
|
def setUp(self) -> None:
|
||||||
create_locales_for_wagtail()
|
|
||||||
create_default_users()
|
create_default_users()
|
||||||
create_simple_test_learning_path()
|
create_test_course()
|
||||||
self.user = User.objects.get(username='student')
|
self.user = User.objects.get(username='student')
|
||||||
self.client.login(username='student', password='test')
|
self.client.login(username='student', password='test')
|
||||||
|
|
||||||
def test_completeLearningContent_works(self):
|
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)
|
learning_content_key = str(learning_content.translation_key)
|
||||||
circle_key = str(learning_content.get_parent().translation_key)
|
|
||||||
|
|
||||||
mark_url = f'/api/completion/circle/mark/'
|
mark_url = f'/api/course/completion/mark/'
|
||||||
print(mark_url)
|
|
||||||
|
|
||||||
response = self.client.post(mark_url, {
|
response = self.client.post(mark_url, {
|
||||||
'page_key': learning_content_key,
|
'page_key': learning_content_key,
|
||||||
|
|
@ -33,16 +32,34 @@ class CourseCompletionApiTestCase(APITestCase):
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
self.assertEqual(len(response_json), 1)
|
self.assertEqual(len(response_json), 1)
|
||||||
self.assertEqual(response_json[0]['page_key'], learning_content_key)
|
self.assertEqual(response_json[0]['page_key'], learning_content_key)
|
||||||
self.assertEqual(response_json[0]['circle_key'], circle_key)
|
self.assertEqual(response_json[0]['completion_status'], 'success')
|
||||||
self.assertTrue(response_json[0]['completed'])
|
|
||||||
|
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
|
# 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()
|
response_json = response.json()
|
||||||
print(json.dumps(response.json(), indent=2))
|
print(json.dumps(response.json(), indent=2))
|
||||||
|
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
self.assertEqual(len(response_json), 1)
|
self.assertEqual(len(response_json), 1)
|
||||||
self.assertEqual(response_json[0]['page_key'], learning_content_key)
|
self.assertEqual(response_json[0]['page_key'], learning_content_key)
|
||||||
self.assertEqual(response_json[0]['circle_key'], circle_key)
|
self.assertTrue(response_json[0]['completion_status'], 'success')
|
||||||
self.assertTrue(response_json[0]['completed'])
|
|
||||||
|
# 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')
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ def page_api_view(request, slug):
|
||||||
@api_view(['GET'])
|
@api_view(['GET'])
|
||||||
def request_course_completion(request, course_id):
|
def request_course_completion(request, course_id):
|
||||||
response_data = CourseCompletionSerializer(
|
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,
|
many=True,
|
||||||
).data
|
).data
|
||||||
|
|
||||||
|
|
@ -52,7 +52,7 @@ def mark_course_completion(request):
|
||||||
cc.save()
|
cc.save()
|
||||||
|
|
||||||
response_data = CourseCompletionSerializer(
|
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,
|
many=True,
|
||||||
).data
|
).data
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue