vbv/server/vbv_lernwelt/learnpath/tests/test_api.py

57 lines
2.1 KiB
Python

from rest_framework.test import APITestCase
from vbv_lernwelt.core.admin import User
from vbv_lernwelt.core.create_default_users import create_default_users
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 CourseSession, CourseSessionUser
from vbv_lernwelt.learnpath.models import LearningPath
class TestRetrieveLearingPathContents(APITestCase):
def setUp(self) -> None:
create_default_users()
create_test_course()
self.slug = "test-lehrgang-lp"
self.learning_path = LearningPath.objects.get(slug=self.slug)
def test_get_learnpath_page(self):
self.user = User.objects.get(username="admin")
self.client.login(username="admin", password="test")
response = self.client.get(f"/api/course/page/{self.slug}/")
self.assertEqual(response.status_code, 200)
data = response.json()
self.assertEqual(self.learning_path.title, data["title"])
# topics and circles
self.assertEqual(4, len(data["children"]))
# circle "analyse" contents
self.assertEqual(13, len(data["children"][3]["children"]))
def test_normalUser_withoutCourseSession_cannotAccess(self):
self.user = User.objects.get(username="student")
self.client.login(username="student", password="test")
response = self.client.get(f"/api/course/page/{self.slug}/")
self.assertEqual(response.status_code, 403)
def test_normalUser_withCourseSession_canAccess(self):
self.user = User.objects.get(username="student")
self.client.login(username="student", password="test")
course_session = CourseSession.objects.create(
course_id=COURSE_TEST_ID,
title="Test Lehrgang Session",
import_id="Test Lehrgang Session",
)
CourseSessionUser.objects.create(
course_session=course_session,
user=self.user,
)
response = self.client.get(f"/api/course/page/{self.slug}/")
self.assertEqual(response.status_code, 200)