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.models import TaskContentStreamBlock
from vbv_lernwelt.assignment.tests.assignment_factories import ( from vbv_lernwelt.assignment.tests.assignment_factories import (
AssignmentFactory, AssignmentFactory,
@ -10,8 +8,9 @@ from vbv_lernwelt.assignment.tests.assignment_factories import (
UserTextInputBlockFactory, UserTextInputBlockFactory,
) )
from vbv_lernwelt.core.utils import replace_whitespace 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 vbv_lernwelt.course.models import CoursePage
from wagtail.blocks import StreamValue
def create_uk_assignments(course_id=COURSE_UK): 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): class CompetenceAPITestCase(APITestCase):
def setUp(self) -> None: def setUp(self) -> None:
create_default_users() create_default_users()
create_test_course() create_test_course(include_uk=False)
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")
@ -23,6 +23,6 @@ class CompetenceAPITestCase(APITestCase):
self.assertEqual(competence_profile.title, data["title"]) self.assertEqual(competence_profile.title, data["title"])
self.assertEqual( 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"], 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.core.tests.helpers import create_locales_for_wagtail
from vbv_lernwelt.course.consts import COURSE_TEST_ID from vbv_lernwelt.course.consts import COURSE_TEST_ID
from vbv_lernwelt.course.factories import CoursePageFactory 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 ( from vbv_lernwelt.learnpath.tests.learning_path_factories import (
AssignmentBlockFactory,
AttendanceDayBlockFactory,
CircleFactory, CircleFactory,
FeedbackBlockFactory,
LearningContentFactory, LearningContentFactory,
LearningModuleBlockFactory,
LearningPathFactory, LearningPathFactory,
LearningSequenceFactory, LearningSequenceFactory,
LearningUnitFactory, LearningUnitFactory,
TopicFactory,
MediaLibraryBlockFactory, MediaLibraryBlockFactory,
AttendanceDayBlockFactory, TopicFactory,
FeedbackBlockFactory,
VideoBlockFactory, VideoBlockFactory,
LearningModuleBlockFactory,
AssignmentBlockFactory,
) )
from vbv_lernwelt.media_library.tests.media_library_factories import ( from vbv_lernwelt.media_library.tests.media_library_factories import (
create_external_link_block, 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_locales_for_wagtail()
create_test_course_with_categories() create_test_course_with_categories()
create_test_assignments()
create_test_competence_profile() 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() create_test_media_library()
# course sessions if with_sessions:
CourseSession.objects.create( # course sessions
course_id=COURSE_TEST_ID, CourseSession.objects.create(
title="Bern 2022 a", 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): 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() 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) course_page = CoursePage.objects.get(course_id=COURSE_TEST_ID)
lp = LearningPathFactory(title="Test Lernpfad", parent=course_page) lp = LearningPathFactory(title="Test Lernpfad", parent=course_page)
TopicFactory(title="Circle ÜK", is_visible=False, parent=lp) if include_uk:
create_test_uk_circle_fahrzeug(lp, title="Fahrzeug") 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) if include_vv:
create_test_circle_reisen(lp) TopicFactory(title="Circle VV", is_visible=False, parent=lp)
create_test_circle_reisen(lp)
def create_test_uk_circle_fahrzeug(lp, title="Fahrzeug"): def create_test_uk_circle_fahrzeug(lp, title="Fahrzeug"):

View File

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

View File

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

View File

@ -12,7 +12,7 @@ from vbv_lernwelt.course.models import CourseSession, CourseSessionUser
class CourseCompletionApiTestCase(APITestCase): class CourseCompletionApiTestCase(APITestCase):
def setUp(self) -> None: def setUp(self) -> None:
create_default_users() create_default_users()
create_test_course() create_test_course(include_uk=False)
self.user = User.objects.get(username="student") 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"), user=User.objects.get(username="patrizia.huggel@eiger-versicherungen.ch"),
role=CourseSessionUser.Role.EXPERT, 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( _csu = CourseSessionUser.objects.create(
course_session=self.course_session, course_session=self.course_session,
@ -52,7 +52,7 @@ class DocumentUploadApiTestCase(APITestCase):
@override_settings(FILE_UPLOAD_STORAGE="s3") @override_settings(FILE_UPLOAD_STORAGE="s3")
def test_can_start_upload(self): def test_can_start_upload(self):
ls = LearningSequence.objects.get( 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 self.test_data["learning_sequence"] = ls.id
@ -78,7 +78,7 @@ class DocumentUploadApiTestCase(APITestCase):
def test_cannot_start_upload_in_other_circle(self): def test_cannot_start_upload_in_other_circle(self):
ls = LearningSequence.objects.get( 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 self.test_data["learning_sequence"] = ls.id
response = self.client.post(f"/api/core/document/start/", self.test_data) 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): def test_student_cannot_start_uploads(self):
self.client.login(username="student", password="test") self.client.login(username="student", password="test")
ls = LearningSequence.objects.get( 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 self.test_data["learning_sequence"] = ls.id
response = self.client.post(f"/api/core/document/start/", self.test_data) 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): def test_expert_can_finish_own_upload(self):
ls = LearningSequence.objects.get( 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 self.test_data["learning_sequence"] = ls.id
response = self.client.post(f"/api/core/document/start/", self.test_data) 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): def test_can_delete_document(self):
ls = LearningSequence.objects.get( ls = LearningSequence.objects.get(
slug="test-lehrgang-lp-circle-analyse-ls-beobachten" slug="test-lehrgang-lp-circle-fahrzeug-ls-vorbereitung"
) )
file = UploadFile( file = UploadFile(
original_file_name="test.pdf", original_file_name="test.pdf",
@ -169,7 +169,7 @@ class DocumentUploadApiTestCase(APITestCase):
def test_student_cannot_delete_document(self): def test_student_cannot_delete_document(self):
self.client.login(username="student", password="test") self.client.login(username="student", password="test")
ls = LearningSequence.objects.get( ls = LearningSequence.objects.get(
slug="test-lehrgang-lp-circle-analyse-ls-beobachten" slug="test-lehrgang-lp-circle-fahrzeug-ls-vorbereitung"
) )
file = UploadFile( file = UploadFile(
original_file_name="test.pdf", original_file_name="test.pdf",

View File

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

View File

@ -28,7 +28,7 @@ class TestRetrieveLearingPathContents(APITestCase):
# 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(13, len(data["children"][3]["children"]))
def test_normalUser_withoutCourseSession_cannotAccess(self): def test_normalUser_withoutCourseSession_cannotAccess(self):
self.user = User.objects.get(username="student") self.user = User.objects.get(username="student")

View File

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