Add python unit tests
This commit is contained in:
parent
6f6fbc3cf8
commit
2295ede996
|
|
@ -9,17 +9,11 @@ def has_course_access(user, course):
|
||||||
if user.is_superuser:
|
if user.is_superuser:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
# attached to CourseSession
|
if CourseSessionUser.objects.filter(
|
||||||
course_session = CourseSessionUser.objects.filter(
|
|
||||||
course_session__course_id=course.id, user=user
|
course_session__course_id=course.id, user=user
|
||||||
).exists()
|
).exists():
|
||||||
|
|
||||||
if course_session:
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
# TODO is trainer/expert of session
|
|
||||||
|
|
||||||
# TODO check school class access
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -27,8 +21,6 @@ def course_sessions_for_user_qs(user):
|
||||||
if user.is_superuser:
|
if user.is_superuser:
|
||||||
return CourseSession.objects.all()
|
return CourseSession.objects.all()
|
||||||
|
|
||||||
course_sessions = CourseSession.objects.filter(
|
course_sessions = CourseSession.objects.filter(coursesessionuser__user=user)
|
||||||
course_session_user__user=user
|
|
||||||
).select_related("coursesessionuser")
|
|
||||||
|
|
||||||
return course_sessions
|
return course_sessions
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,53 @@
|
||||||
|
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 CourseSession, CourseSessionUser
|
||||||
|
|
||||||
|
|
||||||
|
class CourseCompletionApiTestCase(APITestCase):
|
||||||
|
def setUp(self) -> None:
|
||||||
|
create_default_users()
|
||||||
|
create_test_course()
|
||||||
|
|
||||||
|
self.user = User.objects.get(username="student")
|
||||||
|
|
||||||
|
self.course_session = CourseSession.objects.create(
|
||||||
|
course_id=COURSE_TEST_ID,
|
||||||
|
title="Test Lehrgang Session",
|
||||||
|
)
|
||||||
|
|
||||||
|
self.client.login(username="student", password="test")
|
||||||
|
|
||||||
|
def test_api_noCourseSession_withoutCourseSessionUser(self):
|
||||||
|
response = self.client.get(f"/api/course/sessions/")
|
||||||
|
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
self.assertEqual(len(response.json()), 0)
|
||||||
|
|
||||||
|
def test_api_courseSession_withCourseSessionUser(self):
|
||||||
|
csu = CourseSessionUser.objects.create(
|
||||||
|
course_session=self.course_session,
|
||||||
|
user=self.user,
|
||||||
|
)
|
||||||
|
response = self.client.get(f"/api/course/sessions/")
|
||||||
|
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
self.assertEqual(len(response.json()), 1)
|
||||||
|
|
||||||
|
print(json.dumps(response.json(), indent=4))
|
||||||
|
self.assertEqual(response.json()[0]["id"], self.course_session.id)
|
||||||
|
|
||||||
|
def test_api_superUser_canAccessEveryCourseSession(self):
|
||||||
|
self.client.login(username="admin", password="test")
|
||||||
|
response = self.client.get(f"/api/course/sessions/")
|
||||||
|
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
self.assertEqual(len(response.json()), 1)
|
||||||
|
|
||||||
|
print(json.dumps(response.json(), indent=4))
|
||||||
|
self.assertEqual(response.json()[0]["id"], self.course_session.id)
|
||||||
|
|
@ -2,7 +2,9 @@ from rest_framework.test import APITestCase
|
||||||
|
|
||||||
from vbv_lernwelt.core.admin import User
|
from vbv_lernwelt.core.admin import User
|
||||||
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.course.consts import COURSE_TEST_ID
|
||||||
from vbv_lernwelt.course.creators.test_course import create_test_course
|
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
|
from vbv_lernwelt.learnpath.models import LearningPath
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -10,19 +12,44 @@ class TestRetrieveLearingPathContents(APITestCase):
|
||||||
def setUp(self) -> None:
|
def setUp(self) -> None:
|
||||||
create_default_users()
|
create_default_users()
|
||||||
create_test_course()
|
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.user = User.objects.get(username="admin")
|
||||||
self.client.login(username="admin", password="test")
|
self.client.login(username="admin", password="test")
|
||||||
|
|
||||||
def test_get_learnpath_page(self):
|
response = self.client.get(f"/api/course/page/{self.slug}/")
|
||||||
slug = "test-lehrgang-lp"
|
|
||||||
learning_path = LearningPath.objects.get(slug=slug)
|
|
||||||
response = self.client.get(f"/api/course/page/{slug}/")
|
|
||||||
|
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
data = response.json()
|
data = response.json()
|
||||||
|
|
||||||
self.assertEqual(learning_path.title, data["title"])
|
self.assertEqual(self.learning_path.title, data["title"])
|
||||||
# topics and circles
|
# topics and circles
|
||||||
self.assertEqual(4, len(data["children"]))
|
self.assertEqual(4, len(data["children"]))
|
||||||
# circle "analyse" contents
|
# circle "analyse" contents
|
||||||
self.assertEqual(14, len(data["children"][3]["children"]))
|
self.assertEqual(14, 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",
|
||||||
|
)
|
||||||
|
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)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue