66 lines
2.6 KiB
Python
66 lines
2.6 KiB
Python
import json
|
|
|
|
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.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_default_users()
|
|
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='Fachcheck Fahrzeug')
|
|
learning_content_key = str(learning_content.translation_key)
|
|
|
|
mark_url = f'/api/course/completion/mark/'
|
|
|
|
response = self.client.post(mark_url, {
|
|
'page_key': learning_content_key,
|
|
})
|
|
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]['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/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.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')
|
|
|