99 lines
3.5 KiB
Python
99 lines
3.5 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,
|
|
CourseSession,
|
|
CourseSessionUser,
|
|
)
|
|
from vbv_lernwelt.learnpath.models import LearningContentPlaceholder
|
|
|
|
|
|
class CourseCompletionApiTestCase(APITestCase):
|
|
def setUp(self) -> None:
|
|
create_default_users()
|
|
create_test_course(include_uk=False)
|
|
self.user = User.objects.get(username="test-student1@example.com")
|
|
self.cs = CourseSession.objects.create(
|
|
course_id=COURSE_TEST_ID,
|
|
title="Test Lehrgang Session",
|
|
)
|
|
CourseSessionUser.objects.create(
|
|
course_session=self.cs,
|
|
user=self.user,
|
|
)
|
|
self.client.force_login(self.user)
|
|
|
|
def test_completeLearningContent_happyCase(self):
|
|
learning_content = LearningContentPlaceholder.objects.get(
|
|
title="Fachcheck Reisen"
|
|
)
|
|
|
|
mark_url = "/api/course/completion/mark/"
|
|
|
|
response = self.client.post(
|
|
mark_url,
|
|
{
|
|
"page_id": learning_content.id,
|
|
"course_session_id": self.cs.id,
|
|
},
|
|
)
|
|
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_id"], str(learning_content.id))
|
|
self.assertEqual(
|
|
response_json[0]["page_type"], "learnpath.LearningContentPlaceholder"
|
|
)
|
|
self.assertEqual(response_json[0]["completion_status"], "SUCCESS")
|
|
|
|
db_entry = CourseCompletion.objects.get(
|
|
user=self.user, course_session_id=self.cs.id, page_id=learning_content.id
|
|
)
|
|
self.assertEqual(db_entry.completion_status, "SUCCESS")
|
|
|
|
# test getting the circle data
|
|
response = self.client.get(f"/api/course/completion/{self.cs.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_id"], str(learning_content.id))
|
|
self.assertEqual(
|
|
response_json[0]["page_type"], "learnpath.LearningContentPlaceholder"
|
|
)
|
|
self.assertEqual(response_json[0]["completion_status"], "SUCCESS")
|
|
|
|
# test with "fail"
|
|
response = self.client.post(
|
|
mark_url,
|
|
{
|
|
"page_id": learning_content.id,
|
|
"completion_status": "FAIL",
|
|
"course_session_id": self.cs.id,
|
|
},
|
|
)
|
|
|
|
response_json = response.json()
|
|
self.assertEqual(response.status_code, 200)
|
|
self.assertEqual(len(response_json), 1)
|
|
self.assertEqual(response_json[0]["page_id"], str(learning_content.id))
|
|
self.assertEqual(
|
|
response_json[0]["page_type"], "learnpath.LearningContentPlaceholder"
|
|
)
|
|
self.assertEqual(response_json[0]["completion_status"], "FAIL")
|
|
|
|
db_entry = CourseCompletion.objects.get(
|
|
user=self.user, course_session_id=self.cs.id, page_id=learning_content.id
|
|
)
|
|
self.assertEqual(db_entry.completion_status, "FAIL")
|