Fix python tests

This commit is contained in:
Daniel Egger 2023-04-14 09:47:21 +02:00
parent c64341a6c1
commit c0dc4d6a2f
10 changed files with 75 additions and 65 deletions

View File

@ -1,5 +1,3 @@
from wagtail.blocks import StreamValue
from vbv_lernwelt.assignment.models import TaskContentStreamBlock
from vbv_lernwelt.assignment.tests.assignment_factories import (
AssignmentFactory,
@ -10,8 +8,9 @@ from vbv_lernwelt.assignment.tests.assignment_factories import (
UserTextInputBlockFactory,
)
from vbv_lernwelt.core.utils import replace_whitespace
from vbv_lernwelt.course.consts import COURSE_UK, COURSE_TEST_ID
from vbv_lernwelt.course.consts import COURSE_TEST_ID, COURSE_UK
from vbv_lernwelt.course.models import CoursePage
from wagtail.blocks import StreamValue
def create_uk_assignments(course_id=COURSE_UK):

View File

@ -9,7 +9,7 @@ from vbv_lernwelt.course.creators.test_course import create_test_course
class CompetenceAPITestCase(APITestCase):
def setUp(self) -> None:
create_default_users()
create_test_course()
create_test_course(include_uk=False)
self.user = User.objects.get(username="admin")
self.client.login(username="admin", password="test")
@ -23,6 +23,6 @@ class CompetenceAPITestCase(APITestCase):
self.assertEqual(competence_profile.title, data["title"])
self.assertEqual(
"Innerhalb des Handlungsfelds «Fahrzeug» bin ich fähig, die Ziele und Pläne des Kunden zu ergründen (SOLL).",
"Ich bin fähig zu Reisen eine Gesprächsführung zu machen",
data["children"][1]["children"][0]["title"],
)

View File

@ -16,20 +16,20 @@ from vbv_lernwelt.competence.models import CompetencePage
from vbv_lernwelt.core.tests.helpers import create_locales_for_wagtail
from vbv_lernwelt.course.consts import COURSE_TEST_ID
from vbv_lernwelt.course.factories import CoursePageFactory
from vbv_lernwelt.course.models import Course, CoursePage, CourseSession, CourseCategory
from vbv_lernwelt.course.models import Course, CourseCategory, CoursePage, CourseSession
from vbv_lernwelt.learnpath.tests.learning_path_factories import (
AssignmentBlockFactory,
AttendanceDayBlockFactory,
CircleFactory,
FeedbackBlockFactory,
LearningContentFactory,
LearningModuleBlockFactory,
LearningPathFactory,
LearningSequenceFactory,
LearningUnitFactory,
TopicFactory,
MediaLibraryBlockFactory,
AttendanceDayBlockFactory,
FeedbackBlockFactory,
TopicFactory,
VideoBlockFactory,
LearningModuleBlockFactory,
AssignmentBlockFactory,
)
from vbv_lernwelt.media_library.tests.media_library_factories import (
create_external_link_block,
@ -42,20 +42,27 @@ from vbv_lernwelt.media_library.tests.media_library_factories import (
)
def create_test_course():
def create_test_course(include_uk=True, include_vv=True, with_sessions=False):
create_locales_for_wagtail()
create_test_course_with_categories()
create_test_assignments()
create_test_competence_profile()
create_test_learning_path()
if include_uk:
create_test_assignments()
create_test_learning_path(include_uk=include_uk, include_vv=include_vv)
create_test_media_library()
# course sessions
CourseSession.objects.create(
course_id=COURSE_TEST_ID,
title="Bern 2022 a",
)
if with_sessions:
# course sessions
CourseSession.objects.create(
course_id=COURSE_TEST_ID,
title="Bern 2022 a",
)
CourseSession.objects.create(
course_id=COURSE_TEST_ID,
title="Zürich 2022 a",
)
def create_test_course_with_categories(apps=None, schema_editor=None):
@ -96,15 +103,17 @@ def create_test_course_with_categories(apps=None, schema_editor=None):
course.save()
def create_test_learning_path(user=None, skip_locales=True):
def create_test_learning_path(include_uk=True, include_vv=True):
course_page = CoursePage.objects.get(course_id=COURSE_TEST_ID)
lp = LearningPathFactory(title="Test Lernpfad", parent=course_page)
TopicFactory(title="Circle ÜK", is_visible=False, parent=lp)
create_test_uk_circle_fahrzeug(lp, title="Fahrzeug")
if include_uk:
TopicFactory(title="Circle ÜK", is_visible=False, parent=lp)
create_test_uk_circle_fahrzeug(lp, title="Fahrzeug")
TopicFactory(title="Circle VV", is_visible=False, parent=lp)
create_test_circle_reisen(lp)
if include_vv:
TopicFactory(title="Circle VV", is_visible=False, parent=lp)
create_test_circle_reisen(lp)
def create_test_uk_circle_fahrzeug(lp, title="Fahrzeug"):

View File

@ -67,7 +67,7 @@ def command(course):
create_course_uk_fr()
if COURSE_TEST_ID in course:
create_test_course()
create_test_course(with_sessions=True)
def create_versicherungsvermittlerin_course():

View File

@ -17,7 +17,7 @@ from vbv_lernwelt.learnpath.models import LearningContent
class CourseCompletionApiTestCase(APITestCase):
def setUp(self) -> None:
create_default_users()
create_test_course()
create_test_course(include_uk=False)
self.user = User.objects.get(username="admin")
self.cs = CourseSession.objects.create(
course_id=COURSE_TEST_ID,
@ -30,7 +30,7 @@ class CourseCompletionApiTestCase(APITestCase):
self.client.login(username="admin", password="test")
def test_completeLearningContent_works(self):
learning_content = LearningContent.objects.get(title="Fachcheck Fahrzeug")
learning_content = LearningContent.objects.get(title="Fachcheck Reisen")
learning_content_key = str(learning_content.translation_key)
mark_url = f"/api/course/completion/mark/"

View File

@ -12,7 +12,7 @@ from vbv_lernwelt.course.models import CourseSession, CourseSessionUser
class CourseCompletionApiTestCase(APITestCase):
def setUp(self) -> None:
create_default_users()
create_test_course()
create_test_course(include_uk=False)
self.user = User.objects.get(username="student")

View File

@ -30,7 +30,7 @@ class DocumentUploadApiTestCase(APITestCase):
user=User.objects.get(username="patrizia.huggel@eiger-versicherungen.ch"),
role=CourseSessionUser.Role.EXPERT,
)
csu.expert.add(Circle.objects.get(slug="test-lehrgang-lp-circle-analyse"))
csu.expert.add(Circle.objects.get(slug="test-lehrgang-lp-circle-fahrzeug"))
_csu = CourseSessionUser.objects.create(
course_session=self.course_session,
@ -52,7 +52,7 @@ class DocumentUploadApiTestCase(APITestCase):
@override_settings(FILE_UPLOAD_STORAGE="s3")
def test_can_start_upload(self):
ls = LearningSequence.objects.get(
slug="test-lehrgang-lp-circle-analyse-ls-beobachten"
slug="test-lehrgang-lp-circle-fahrzeug-ls-vorbereitung"
)
self.test_data["learning_sequence"] = ls.id
@ -78,7 +78,7 @@ class DocumentUploadApiTestCase(APITestCase):
def test_cannot_start_upload_in_other_circle(self):
ls = LearningSequence.objects.get(
slug="test-lehrgang-lp-circle-basis-ls-starten"
slug="test-lehrgang-lp-circle-reisen-ls-analyse"
)
self.test_data["learning_sequence"] = ls.id
response = self.client.post(f"/api/core/document/start/", self.test_data)
@ -88,7 +88,7 @@ class DocumentUploadApiTestCase(APITestCase):
def test_student_cannot_start_uploads(self):
self.client.login(username="student", password="test")
ls = LearningSequence.objects.get(
slug="test-lehrgang-lp-circle-basis-ls-starten"
slug="test-lehrgang-lp-circle-fahrzeug-ls-vorbereitung"
)
self.test_data["learning_sequence"] = ls.id
response = self.client.post(f"/api/core/document/start/", self.test_data)
@ -97,7 +97,7 @@ class DocumentUploadApiTestCase(APITestCase):
def test_expert_can_finish_own_upload(self):
ls = LearningSequence.objects.get(
slug="test-lehrgang-lp-circle-analyse-ls-beobachten"
slug="test-lehrgang-lp-circle-fahrzeug-ls-vorbereitung"
)
self.test_data["learning_sequence"] = ls.id
response = self.client.post(f"/api/core/document/start/", self.test_data)
@ -135,7 +135,7 @@ class DocumentUploadApiTestCase(APITestCase):
def test_can_delete_document(self):
ls = LearningSequence.objects.get(
slug="test-lehrgang-lp-circle-analyse-ls-beobachten"
slug="test-lehrgang-lp-circle-fahrzeug-ls-vorbereitung"
)
file = UploadFile(
original_file_name="test.pdf",
@ -169,7 +169,7 @@ class DocumentUploadApiTestCase(APITestCase):
def test_student_cannot_delete_document(self):
self.client.login(username="student", password="test")
ls = LearningSequence.objects.get(
slug="test-lehrgang-lp-circle-analyse-ls-beobachten"
slug="test-lehrgang-lp-circle-fahrzeug-ls-vorbereitung"
)
file = UploadFile(
original_file_name="test.pdf",

View File

@ -30,7 +30,7 @@ class FeedbackApiBaseTestCase(APITestCase):
user=User.objects.get(username="patrizia.huggel@eiger-versicherungen.ch"),
role=CourseSessionUser.Role.EXPERT,
)
csu.expert.add(Circle.objects.get(slug="test-lehrgang-lp-circle-analyse"))
csu.expert.add(Circle.objects.get(slug="test-lehrgang-lp-circle-fahrzeug"))
_csu = CourseSessionUser.objects.create(
course_session=self.course_session,
@ -58,7 +58,7 @@ class FeedbackSummaryApiTestCase(FeedbackApiBaseTestCase):
user=expert,
role=CourseSessionUser.Role.EXPERT,
)
basis_circle = Circle.objects.get(slug="test-lehrgang-lp-circle-basis")
basis_circle = Circle.objects.get(slug="test-lehrgang-lp-circle-reisen")
csu.expert.add(basis_circle)
FeedbackFactory(circle=basis_circle, course_session=csu.course_session).save()
@ -81,7 +81,7 @@ class FeedbackSummaryApiTestCase(FeedbackApiBaseTestCase):
user=expert,
role=CourseSessionUser.Role.EXPERT,
)
basis_circle = Circle.objects.get(slug="test-lehrgang-lp-circle-basis")
basis_circle = Circle.objects.get(slug="test-lehrgang-lp-circle-reisen")
csu.expert.add(basis_circle)
feedback = FeedbackFactory(
@ -100,26 +100,26 @@ class FeedbackSummaryApiTestCase(FeedbackApiBaseTestCase):
self.assertEqual(len(Notification.objects.all()), 0)
def test_can_get_feedback_summary_for_circles(self):
number_basis_feedback = 5
number_analyse_feedback = 10
number_reisen_feedback = 5
number_fahrzeug_feedback = 10
csu = CourseSessionUser.objects.get(
course_session=self.course_session,
user=User.objects.get(username="patrizia.huggel@eiger-versicherungen.ch"),
role=CourseSessionUser.Role.EXPERT,
)
analyse_circle = Circle.objects.get(slug="test-lehrgang-lp-circle-analyse")
basis_circle = Circle.objects.get(slug="test-lehrgang-lp-circle-basis")
csu.expert.add(basis_circle)
fahrzeug_circle = Circle.objects.get(slug="test-lehrgang-lp-circle-fahrzeug")
reisen_circle = Circle.objects.get(slug="test-lehrgang-lp-circle-reisen")
csu.expert.add(reisen_circle)
for i in range(number_basis_feedback):
for i in range(number_reisen_feedback):
FeedbackFactory(
circle=basis_circle, course_session=csu.course_session
circle=reisen_circle, course_session=csu.course_session
).save()
for i in range(number_analyse_feedback):
for i in range(number_fahrzeug_feedback):
FeedbackFactory(
circle=analyse_circle, course_session=csu.course_session
circle=fahrzeug_circle, course_session=csu.course_session
).save()
response = self.client.get(
@ -128,8 +128,8 @@ class FeedbackSummaryApiTestCase(FeedbackApiBaseTestCase):
self.assertEqual(response.status_code, 200)
expected = [
{"circle_id": basis_circle.id, "count": number_basis_feedback},
{"circle_id": analyse_circle.id, "count": number_analyse_feedback},
{"circle_id": fahrzeug_circle.id, "count": number_fahrzeug_feedback},
{"circle_id": reisen_circle.id, "count": number_reisen_feedback},
]
self.assertEqual(response.data, expected)
@ -142,17 +142,17 @@ class FeedbackSummaryApiTestCase(FeedbackApiBaseTestCase):
user=User.objects.get(username="patrizia.huggel@eiger-versicherungen.ch"),
role=CourseSessionUser.Role.EXPERT,
)
analyse_circle = Circle.objects.get(slug="test-lehrgang-lp-circle-analyse")
basis_circle = Circle.objects.get(slug="test-lehrgang-lp-circle-basis")
fahrzeug_circle = Circle.objects.get(slug="test-lehrgang-lp-circle-fahrzeug")
reisen_circle = Circle.objects.get(slug="test-lehrgang-lp-circle-reisen")
for i in range(number_basis_feedback):
FeedbackFactory(
circle=basis_circle, course_session=csu.course_session
circle=reisen_circle, course_session=csu.course_session
).save()
for i in range(number_analyse_feedback):
FeedbackFactory(
circle=analyse_circle, course_session=csu.course_session
circle=fahrzeug_circle, course_session=csu.course_session
).save()
response = self.client.get(
@ -161,7 +161,7 @@ class FeedbackSummaryApiTestCase(FeedbackApiBaseTestCase):
self.assertEqual(response.status_code, 200)
expected = [
{"circle_id": analyse_circle.id, "count": number_analyse_feedback},
{"circle_id": fahrzeug_circle.id, "count": number_analyse_feedback},
]
self.assertEqual(response.data, expected)
@ -171,8 +171,10 @@ class FeedbackSummaryApiTestCase(FeedbackApiBaseTestCase):
course_session=self.course_session,
user=self.user,
)
analyse_circle = Circle.objects.get(slug="test-lehrgang-lp-circle-analyse")
FeedbackFactory(circle=analyse_circle, course_session=csu.course_session).save()
fahrzeug_circle = Circle.objects.get(slug="test-lehrgang-lp-circle-fahrzeug")
FeedbackFactory(
circle=fahrzeug_circle, course_session=csu.course_session
).save()
response = self.client.get(
f"/api/core/feedback/{csu.course_session.course.id}/summary/"
@ -202,7 +204,7 @@ class FeedbackDetailApiTestCase(FeedbackApiBaseTestCase):
user=User.objects.get(username="patrizia.huggel@eiger-versicherungen.ch"),
role=CourseSessionUser.Role.EXPERT,
)
circle = Circle.objects.get(slug="test-lehrgang-lp-circle-analyse")
circle = Circle.objects.get(slug="test-lehrgang-lp-circle-fahrzeug")
for i in range(3):
FeedbackFactory(
@ -249,7 +251,7 @@ class FeedbackDetailApiTestCase(FeedbackApiBaseTestCase):
role=CourseSessionUser.Role.EXPERT,
)
circle = Circle.objects.get(slug="test-lehrgang-lp-circle-basis")
circle = Circle.objects.get(slug="test-lehrgang-lp-circle-reisen")
FeedbackFactory(circle=circle, course_session=csu.course_session).save()
response = self.client.get(
@ -265,7 +267,7 @@ class FeedbackDetailApiTestCase(FeedbackApiBaseTestCase):
course_session=self.course_session,
user=self.user,
)
circle = Circle.objects.get(slug="test-lehrgang-lp-circle-analyse")
circle = Circle.objects.get(slug="test-lehrgang-lp-circle-fahrzeug")
FeedbackFactory(circle=circle, course_session=csu.course_session).save()
response = self.client.get(

View File

@ -28,7 +28,7 @@ class TestRetrieveLearingPathContents(APITestCase):
# topics and circles
self.assertEqual(4, len(data["children"]))
# circle "analyse" contents
self.assertEqual(14, len(data["children"][3]["children"]))
self.assertEqual(13, len(data["children"][3]["children"]))
def test_normalUser_withoutCourseSession_cannotAccess(self):
self.user = User.objects.get(username="student")

View File

@ -8,12 +8,12 @@ from vbv_lernwelt.learnpath.models import LearningContent
class SaveSlugTestCase(TestCase):
def setUp(self) -> None:
create_default_users()
create_test_course()
create_test_course(include_uk=False)
def test_save_willHandleSlug(self):
lc_fachcheck = LearningContent.objects.get(title="Fachcheck Fahrzeug")
lc_fachcheck = LearningContent.objects.get(title="Fachcheck Reisen")
self.assertEqual(
lc_fachcheck.slug, "test-lehrgang-lp-circle-analyse-lc-fachcheck-fahrzeug"
lc_fachcheck.slug, "test-lehrgang-lp-circle-reisen-lc-fachcheck-reisen"
)
# only changing minutes should not change slug
@ -21,7 +21,7 @@ class SaveSlugTestCase(TestCase):
lc_fachcheck.save()
lc_fachcheck = LearningContent.objects.get(id=lc_fachcheck.id)
self.assertEqual(
lc_fachcheck.slug, "test-lehrgang-lp-circle-analyse-lc-fachcheck-fahrzeug"
lc_fachcheck.slug, "test-lehrgang-lp-circle-reisen-lc-fachcheck-reisen"
)
# changing title should change slug
@ -29,5 +29,5 @@ class SaveSlugTestCase(TestCase):
lc_fachcheck.save()
lc_fachcheck = LearningContent.objects.get(id=lc_fachcheck.id)
self.assertEqual(
lc_fachcheck.slug, "test-lehrgang-lp-circle-analyse-lc-fachcheck-foobar"
lc_fachcheck.slug, "test-lehrgang-lp-circle-reisen-lc-fachcheck-foobar"
)