Merged in feature/refactor-test-course (pull request #57)
Feature/refactor test course
This commit is contained in:
commit
a3feadc364
|
|
@ -5,77 +5,59 @@ describe("circle page", () => {
|
|||
cy.manageCommand("cypress_reset");
|
||||
|
||||
login("admin", "test");
|
||||
cy.visit("/course/test-lehrgang/learn/analyse");
|
||||
cy.visit("/course/test-lehrgang/learn/fahrzeug");
|
||||
});
|
||||
|
||||
it("can open circle page", () => {
|
||||
cy.get('[data-cy="circle-title"]').should("contain", "Analyse");
|
||||
cy.get('[data-cy="circle-title"]').should("contain", "Fahrzeug");
|
||||
});
|
||||
|
||||
it("can toggle learning content", () => {
|
||||
cy.get('[data-cy="circle-title"]').should("contain", "Analyse");
|
||||
cy.get('[data-cy="circle-title"]').should("contain", "Fahrzeug");
|
||||
|
||||
cy.get(
|
||||
'[data-cy="test-lehrgang-lp-circle-analyse-lc-einleitung-circle-analyse-checkbox"] > .cy-checkbox'
|
||||
'[data-cy="test-lehrgang-lp-circle-fahrzeug-lc-mediathek-fahrzeug-checkbox"] > .cy-checkbox'
|
||||
).click();
|
||||
|
||||
cy.get(
|
||||
'[data-cy="test-lehrgang-lp-circle-analyse-lc-einleitung-circle-analyse-checkbox"] > .cy-checkbox-checked'
|
||||
'[data-cy="test-lehrgang-lp-circle-fahrzeug-lc-mediathek-fahrzeug-checkbox"] > .cy-checkbox-checked'
|
||||
).should("have.class", "cy-checkbox-checked");
|
||||
|
||||
// completion data should still be there after reload
|
||||
cy.reload();
|
||||
cy.get(
|
||||
'[data-cy="test-lehrgang-lp-circle-analyse-lc-einleitung-circle-analyse-checkbox"] > .cy-checkbox-checked'
|
||||
'[data-cy="test-lehrgang-lp-circle-fahrzeug-lc-mediathek-fahrzeug-checkbox"] > .cy-checkbox-checked'
|
||||
).should("have.class", "cy-checkbox-checked");
|
||||
});
|
||||
|
||||
it("can open learning contents and complete them by continuing", () => {
|
||||
cy.get(
|
||||
'[data-cy="test-lehrgang-lp-circle-analyse-lu-fahrzeug"] > div'
|
||||
).should("have.class", "self-evaluation-unknown");
|
||||
|
||||
cy.get(
|
||||
'[data-cy="test-lehrgang-lp-circle-analyse-lc-rafael-fasel-wechselt-sein-auto"]'
|
||||
'[data-cy="test-lehrgang-lp-circle-fahrzeug-lc-verschaffe-dir-einen-überblick"]'
|
||||
).click();
|
||||
cy.get('[data-cy="ln-title"]').should(
|
||||
"contain",
|
||||
"Rafael Fasel wechselt sein Auto"
|
||||
"Verschaffe dir einen Überblick"
|
||||
);
|
||||
cy.get('[data-cy="complete-and-continue"]').click();
|
||||
|
||||
cy.get('[data-cy="ls-continue-button"]').click();
|
||||
cy.get('[data-cy="ln-title"]').should("contain", "Fachcheck Fahrzeug");
|
||||
cy.get('[data-cy="ln-title"]').should("contain", "Mediathek Fahrzeug");
|
||||
cy.get('[data-cy="complete-and-continue"]').click();
|
||||
|
||||
cy.get('[data-cy="test-lehrgang-lp-circle-analyse-lu-fahrzeug"]').click();
|
||||
cy.get('[data-cy="ln-title"]').should(
|
||||
"contain",
|
||||
"Selbsteinschätzung Fahrzeug"
|
||||
);
|
||||
cy.get('[data-cy="success"]').click();
|
||||
cy.get('[data-cy="next-step"]').click();
|
||||
cy.get('[data-cy="success"]').click();
|
||||
cy.get('[data-cy="complete-and-continue"]').click();
|
||||
|
||||
cy.get('[data-cy="ln-title"]').should(
|
||||
"contain",
|
||||
"Selbsteinschätzung Fahrzeug"
|
||||
);
|
||||
cy.get('[data-cy="success"]').click();
|
||||
cy.get('[data-cy="complete-and-continue"]').click();
|
||||
cy.get('[data-cy="ls-continue-button"]').click();
|
||||
cy.get('[data-cy="ln-title"]').should("contain", "Vorbereitungsauftrag");
|
||||
cy.get('[data-cy="complete-and-continue"]').click();
|
||||
|
||||
cy.get(
|
||||
'[data-cy="test-lehrgang-lp-circle-analyse-lc-rafael-fasel-wechselt-sein-auto-checkbox"] > .cy-checkbox-checked'
|
||||
'[data-cy="test-lehrgang-lp-circle-fahrzeug-lc-verschaffe-dir-einen-überblick-checkbox"] > .cy-checkbox-checked'
|
||||
).should("have.class", "cy-checkbox-checked");
|
||||
cy.get(
|
||||
'[data-cy="test-lehrgang-lp-circle-analyse-lc-fachcheck-fahrzeug-checkbox"] > .cy-checkbox-checked'
|
||||
'[data-cy="test-lehrgang-lp-circle-fahrzeug-lc-mediathek-fahrzeug-checkbox"] > .cy-checkbox-checked'
|
||||
).should("have.class", "cy-checkbox-checked");
|
||||
|
||||
cy.get(
|
||||
'[data-cy="test-lehrgang-lp-circle-analyse-lu-fahrzeug"] > div'
|
||||
).should("have.class", "self-evaluation-success");
|
||||
'[data-cy="test-lehrgang-lp-circle-fahrzeug-lc-vorbereitungsauftrag-checkbox"] > .cy-checkbox-checked'
|
||||
).should("have.class", "cy-checkbox-checked");
|
||||
});
|
||||
|
||||
it("continue button works", () => {
|
||||
|
|
@ -84,23 +66,20 @@ describe("circle page", () => {
|
|||
|
||||
cy.get('[data-cy="ln-title"]').should(
|
||||
"contain",
|
||||
'Einleitung Circle "Analyse"'
|
||||
"Verschaffe dir einen Überblick"
|
||||
);
|
||||
cy.get('[data-cy="complete-and-continue"]').click();
|
||||
|
||||
cy.get('[data-cy="ls-continue-button"]').should("contain", "Weiter geht's");
|
||||
cy.get('[data-cy="ls-continue-button"]').click();
|
||||
cy.get('[data-cy="ln-title"]').should(
|
||||
"contain",
|
||||
"Rafael Fasel wechselt sein Auto"
|
||||
);
|
||||
cy.get('[data-cy="ln-title"]').should("contain", "Mediathek Fahrzeug");
|
||||
});
|
||||
|
||||
it("can open learning content by url", () => {
|
||||
cy.visit("/course/test-lehrgang/learn/analyse/reiseversicherung");
|
||||
cy.get('[data-cy="ln-title"]').should("contain", "Reiseversicherung");
|
||||
cy.visit("/course/test-lehrgang/learn/fahrzeug/mediathek-fahrzeug");
|
||||
cy.get('[data-cy="ln-title"]').should("contain", "Mediathek Fahrzeug");
|
||||
|
||||
cy.get('[data-cy="close-learning-content"]').click();
|
||||
cy.get('[data-cy="circle-title"]').should("contain", "Analyse");
|
||||
cy.get('[data-cy="circle-title"]').should("contain", "Fahrzeug");
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -6,37 +6,37 @@ describe("Competence", () => {
|
|||
|
||||
login("admin", "test");
|
||||
|
||||
// test-lehrgang-lp-circle-analyse-lu-fahrzeug ist eine Selbstevaluation
|
||||
// test-lehrgang-lp-circle-reisen-lu-reisen ist eine Selbstevaluation
|
||||
// mit mehreren Schritten
|
||||
cy.visit("/course/test-lehrgang/learn/analyse");
|
||||
cy.visit("/course/test-lehrgang/learn/reisen");
|
||||
});
|
||||
|
||||
it("self evaluation should be neutral", () => {
|
||||
cy.get('[data-cy="test-lehrgang-lp-circle-analyse-lu-fahrzeug"]')
|
||||
cy.get('[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen"]')
|
||||
.find('[data-cy="unknown"]')
|
||||
.should("exist");
|
||||
});
|
||||
|
||||
it("should be able to make a happy self evaluation", () => {
|
||||
cy.get('[data-cy="test-lehrgang-lp-circle-analyse-lu-fahrzeug"]').click();
|
||||
cy.get('[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen"]').click();
|
||||
cy.makeSelfEvaluation([true, true]);
|
||||
cy.get('[data-cy="test-lehrgang-lp-circle-analyse-lu-fahrzeug"]')
|
||||
cy.get('[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen"]')
|
||||
.find('[data-cy="success"]')
|
||||
.should("exist");
|
||||
});
|
||||
|
||||
it("should be able to make a fail self evaluation", () => {
|
||||
cy.get('[data-cy="test-lehrgang-lp-circle-analyse-lu-fahrzeug"]').click();
|
||||
cy.get('[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen"]').click();
|
||||
cy.makeSelfEvaluation([false, false]);
|
||||
cy.get('[data-cy="test-lehrgang-lp-circle-analyse-lu-fahrzeug"]')
|
||||
cy.get('[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen"]')
|
||||
.find('[data-cy="fail"]')
|
||||
.should("exist");
|
||||
});
|
||||
|
||||
it("should be able to make a mixed self evaluation", () => {
|
||||
cy.get('[data-cy="test-lehrgang-lp-circle-analyse-lu-fahrzeug"]').click();
|
||||
cy.get('[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen"]').click();
|
||||
cy.makeSelfEvaluation([false, true]);
|
||||
cy.get('[data-cy="test-lehrgang-lp-circle-analyse-lu-fahrzeug"]')
|
||||
cy.get('[data-cy="test-lehrgang-lp-circle-reisen-lu-reisen"]')
|
||||
.find('[data-cy="fail"]')
|
||||
.should("exist");
|
||||
});
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ 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
|
||||
from vbv_lernwelt.course.consts import COURSE_TEST_ID, COURSE_UK
|
||||
from vbv_lernwelt.course.models import CoursePage
|
||||
from wagtail.blocks import StreamValue
|
||||
|
||||
|
|
@ -283,3 +283,275 @@ def create_uk_assignments(course_id=COURSE_UK):
|
|||
)
|
||||
|
||||
assignment.save()
|
||||
|
||||
|
||||
def create_test_assignments(course_id=COURSE_TEST_ID):
|
||||
course_page = CoursePage.objects.get(course_id=course_id)
|
||||
assignment_page = AssignmentListPageFactory(
|
||||
parent=course_page,
|
||||
)
|
||||
|
||||
assignment = AssignmentFactory(
|
||||
parent=assignment_page,
|
||||
title="Überprüfen einer Motorfahrzeugs-Versicherungspolice",
|
||||
effort_required="ca. 5 Stunden",
|
||||
starting_position=replace_whitespace(
|
||||
"""
|
||||
Jemand aus deiner Familie oder aus deinem Freundeskreis möchte sein
|
||||
Versicherungspolice überprüfen lassen. Diese Person kommt nun mit ihrer Police auf dich zu
|
||||
und bittet dich als Versicherungsprofi, diese kritisch zu überprüfen und ihr ggf. Anpassungsvorschläge
|
||||
zu unterbreiten. In diesem Kompetenznachweis kannst du nun dein Wissen und Können im Bereich
|
||||
der Motorfahrzeugversicherung unter Beweis stellen.
|
||||
"""
|
||||
),
|
||||
performance_objectives=[
|
||||
(
|
||||
"performance_objective",
|
||||
PerformanceObjectiveBlockFactory(
|
||||
text="Sie erläutern die Leistungen und Produkte im Versicherungsbereich."
|
||||
),
|
||||
),
|
||||
(
|
||||
"performance_objective",
|
||||
PerformanceObjectiveBlockFactory(
|
||||
text="Sie beurteilen gängige Versicherungslösungen fachkundig."
|
||||
),
|
||||
),
|
||||
],
|
||||
assessment_document_url="https://www.vbv.ch",
|
||||
assessment_description="Diese geleitete Fallarbeit wird auf Grund des folgenden Beurteilungsintrument bewertet.",
|
||||
)
|
||||
|
||||
assignment.tasks = []
|
||||
assignment.tasks.append(
|
||||
(
|
||||
"task",
|
||||
TaskBlockFactory(
|
||||
title="Teilaufgabe 1: Beispiel einer Versicherungspolice finden",
|
||||
# it is hard to create a StreamValue programmatically, we have to
|
||||
# create a `StreamValue` manually. Ask the Daniel and/or Ramon
|
||||
content=StreamValue(
|
||||
TaskContentStreamBlock(),
|
||||
stream_data=[
|
||||
(
|
||||
"explanation",
|
||||
ExplanationBlockFactory(text="Dies ist ein Beispieltext."),
|
||||
),
|
||||
(
|
||||
"user_confirmation",
|
||||
ExplanationBlockFactory(
|
||||
text="Ja, ich habe Motorfahrzeugversicherungspolice von jemandem aus meiner Familie oder meinem Freundeskreis erhalten."
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
)
|
||||
)
|
||||
|
||||
assignment.tasks.append(
|
||||
(
|
||||
"task",
|
||||
TaskBlockFactory(
|
||||
title="Teilaufgabe 2: Kundensituation und Ausgangslage",
|
||||
content=StreamValue(
|
||||
TaskContentStreamBlock(),
|
||||
stream_data=[
|
||||
(
|
||||
"explanation",
|
||||
ExplanationBlockFactory(
|
||||
text=replace_whitespace(
|
||||
"""
|
||||
Erläutere die Kundensituation und die Ausgangslage.
|
||||
* Hast du alle Informationen, die du für den Policen-Check benötigst?
|
||||
* Halte die wichtigsten Eckwerte des aktuellen Versicherungsverhältnisse in deiner Dokumentation fest (z.B wie lang wo versichert, Alter des Fahrzeugs, Kundenprofil, etc.)
|
||||
"""
|
||||
)
|
||||
),
|
||||
),
|
||||
("user_text_input", UserTextInputBlockFactory()),
|
||||
],
|
||||
),
|
||||
),
|
||||
)
|
||||
)
|
||||
|
||||
assignment.tasks.append(
|
||||
(
|
||||
"task",
|
||||
TaskBlockFactory(
|
||||
title="Teilaufgabe 3: Aktuelle Versicherung",
|
||||
# TODO: add document upload
|
||||
content=StreamValue(
|
||||
TaskContentStreamBlock(),
|
||||
stream_data=[
|
||||
(
|
||||
"explanation",
|
||||
ExplanationBlockFactory(
|
||||
text=replace_whitespace(
|
||||
"""
|
||||
Zeige nun detailliert auf, wie dein Kundenbeispiel momentan versichert ist.
|
||||
"""
|
||||
)
|
||||
),
|
||||
),
|
||||
("user_text_input", UserTextInputBlockFactory()),
|
||||
],
|
||||
),
|
||||
),
|
||||
)
|
||||
)
|
||||
|
||||
assignment.tasks.append(
|
||||
(
|
||||
"task",
|
||||
TaskBlockFactory(
|
||||
title="Teilaufgabe 4: Deine Empfehlungen",
|
||||
content=StreamValue(
|
||||
TaskContentStreamBlock(),
|
||||
stream_data=[
|
||||
(
|
||||
"explanation",
|
||||
ExplanationBlockFactory(
|
||||
text=replace_whitespace(
|
||||
"""
|
||||
Erarbeite nun basierend auf deinen Erkenntnissen eine Empfehlung für die Person.
|
||||
"""
|
||||
)
|
||||
),
|
||||
),
|
||||
(
|
||||
"user_text_input",
|
||||
UserTextInputBlockFactory(
|
||||
text=replace_whitespace(
|
||||
"""
|
||||
Gibt es zusätzliche Deckungen, die du der Person empfehlen würdest? Begründe deine Empfehlung
|
||||
"""
|
||||
)
|
||||
),
|
||||
),
|
||||
(
|
||||
"user_text_input",
|
||||
UserTextInputBlockFactory(
|
||||
text=replace_whitespace(
|
||||
"""
|
||||
Gibt es Deckungen, die du streichen würdest? Begründe deine Empfehlung.
|
||||
"""
|
||||
)
|
||||
),
|
||||
),
|
||||
(
|
||||
"user_text_input",
|
||||
UserTextInputBlockFactory(
|
||||
text=replace_whitespace(
|
||||
"""
|
||||
Wenn die Person gemäss deiner Einschätzung genau richtig versichert ist, argumentiere, warum dies der Fall ist.
|
||||
"""
|
||||
)
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
)
|
||||
)
|
||||
|
||||
assignment.tasks.append(
|
||||
(
|
||||
"task",
|
||||
TaskBlockFactory(
|
||||
title="Teilaufgabe 5: Reflexion",
|
||||
content=StreamValue(
|
||||
TaskContentStreamBlock(),
|
||||
stream_data=[
|
||||
(
|
||||
"explanation",
|
||||
ExplanationBlockFactory(
|
||||
text=replace_whitespace(
|
||||
"""
|
||||
Reflektiere dein Handeln und halte deine Erkenntnisse fest. Frage dich dabei:
|
||||
"""
|
||||
)
|
||||
),
|
||||
),
|
||||
(
|
||||
"user_text_input",
|
||||
UserTextInputBlockFactory(
|
||||
text=replace_whitespace(
|
||||
"""
|
||||
War die Bearbeitung dieser geleiteten Fallarbeit erfolgreich? Begründe deine Einschätzung.
|
||||
"""
|
||||
)
|
||||
),
|
||||
),
|
||||
(
|
||||
"user_text_input",
|
||||
UserTextInputBlockFactory(
|
||||
text=replace_whitespace(
|
||||
"""
|
||||
Was ist dir bei der Bearbeitung des Auftrags gut gelungen?
|
||||
"""
|
||||
)
|
||||
),
|
||||
),
|
||||
(
|
||||
"user_text_input",
|
||||
UserTextInputBlockFactory(
|
||||
text=replace_whitespace(
|
||||
"""
|
||||
Was ist dir bei der Bearbeitung des Auftrags weniger gut gelungen?
|
||||
"""
|
||||
)
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
)
|
||||
)
|
||||
|
||||
assignment.tasks.append(
|
||||
(
|
||||
"task",
|
||||
TaskBlockFactory(
|
||||
title="Teilaufgabe 6: Learnings",
|
||||
content=StreamValue(
|
||||
TaskContentStreamBlock(),
|
||||
stream_data=[
|
||||
(
|
||||
"explanation",
|
||||
ExplanationBlockFactory(
|
||||
text=replace_whitespace(
|
||||
"""
|
||||
Leite aus der Teilaufgabe 5 deine persönlichen Learnings ab.
|
||||
"""
|
||||
)
|
||||
),
|
||||
),
|
||||
(
|
||||
"user_text_input",
|
||||
UserTextInputBlockFactory(
|
||||
text=replace_whitespace(
|
||||
"""
|
||||
Was würdest du beim nächsten Mal anders machen?
|
||||
"""
|
||||
)
|
||||
),
|
||||
),
|
||||
(
|
||||
"user_text_input",
|
||||
UserTextInputBlockFactory(
|
||||
text=replace_whitespace(
|
||||
"""
|
||||
Was hast du beim Bearbeiten des Auftrags Neues gelernt?
|
||||
"""
|
||||
)
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
)
|
||||
)
|
||||
|
||||
assignment.save()
|
||||
|
|
|
|||
|
|
@ -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"],
|
||||
)
|
||||
|
|
|
|||
|
|
@ -2,8 +2,11 @@ import json
|
|||
|
||||
import wagtail_factories
|
||||
from django.conf import settings
|
||||
from slugify import slugify
|
||||
from wagtail.models import Site
|
||||
|
||||
from vbv_lernwelt.assignment.creators.create_assignments import create_test_assignments
|
||||
from vbv_lernwelt.assignment.models import Assignment
|
||||
from vbv_lernwelt.competence.factories import (
|
||||
CompetencePageFactory,
|
||||
CompetenceProfilePageFactory,
|
||||
|
|
@ -13,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, CourseCategory, CoursePage
|
||||
from vbv_lernwelt.learnpath.models import LearningUnit
|
||||
from vbv_lernwelt.course.models import Course, CourseCategory, CoursePage, CourseSession
|
||||
from vbv_lernwelt.learnpath.tests.learning_path_factories import (
|
||||
AssignmentBlockFactory,
|
||||
AttendanceDayBlockFactory,
|
||||
CircleFactory,
|
||||
DocumentBlockFactory,
|
||||
ExerciseBlockFactory,
|
||||
FeedbackBlockFactory,
|
||||
LearningContentFactory,
|
||||
LearningModuleBlockFactory,
|
||||
LearningPathFactory,
|
||||
LearningSequenceFactory,
|
||||
LearningUnitFactory,
|
||||
OnlineTrainingBlockFactory,
|
||||
TestBlockFactory,
|
||||
MediaLibraryBlockFactory,
|
||||
TopicFactory,
|
||||
VideoBlockFactory,
|
||||
)
|
||||
from vbv_lernwelt.media_library.tests.media_library_factories import (
|
||||
create_external_link_block,
|
||||
|
|
@ -39,13 +42,28 @@ 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_learning_path()
|
||||
|
||||
create_test_competence_profile()
|
||||
if include_uk:
|
||||
create_test_assignments()
|
||||
|
||||
create_test_learning_path(include_uk=include_uk, include_vv=include_vv)
|
||||
create_test_media_library()
|
||||
|
||||
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):
|
||||
if apps is not None:
|
||||
|
|
@ -85,122 +103,216 @@ 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="Basis", is_visible=False, parent=lp)
|
||||
if include_uk:
|
||||
TopicFactory(title="Circle ÜK", is_visible=False, parent=lp)
|
||||
create_test_uk_circle_fahrzeug(lp, title="Fahrzeug")
|
||||
|
||||
circle_basis = CircleFactory(
|
||||
title="Basis",
|
||||
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"):
|
||||
circle = CircleFactory(
|
||||
title=title,
|
||||
parent=lp,
|
||||
description="Basis",
|
||||
description="""
|
||||
In diesem Circle erfährst du wie der Lehrgang aufgebaut ist.
|
||||
Zudem lernst du die wichtigsten Grundlagen,
|
||||
damit du erfolgreich mit deinem Lernpfad (durch-)starten kannst.
|
||||
""".strip(),
|
||||
)
|
||||
LearningSequenceFactory(
|
||||
title="Starten", parent=circle_basis, icon="it-icon-ls-start"
|
||||
title="Vorbereitung", parent=circle, icon="it-icon-ls-start"
|
||||
)
|
||||
LearningUnitFactory(title="Einführung", parent=circle_basis)
|
||||
lu = LearningUnitFactory(title="Vorbereitung", parent=circle)
|
||||
LearningContentFactory(
|
||||
title="Einführung",
|
||||
parent=circle_basis,
|
||||
minutes=15,
|
||||
contents=[("document", DocumentBlockFactory())],
|
||||
)
|
||||
LearningSequenceFactory(title="Beenden", parent=circle_basis, icon="it-icon-ls-end")
|
||||
LearningUnitFactory(title="Beenden", parent=circle_basis)
|
||||
LearningContentFactory(
|
||||
title="Jetzt kann es losgehen!",
|
||||
parent=circle_basis,
|
||||
minutes=30,
|
||||
contents=[("document", DocumentBlockFactory())],
|
||||
)
|
||||
|
||||
TopicFactory(title="Beraten der Kunden", parent=lp)
|
||||
|
||||
circle = CircleFactory(
|
||||
title="Analyse",
|
||||
parent=lp,
|
||||
description="Unit-Test Circle",
|
||||
)
|
||||
|
||||
LearningSequenceFactory(title="Starten", parent=circle, icon="it-icon-ls-start")
|
||||
LearningUnitFactory(title="Einführung", parent=circle)
|
||||
LearningContentFactory(
|
||||
title=f'Einleitung Circle "Analyse"',
|
||||
title="Verschaffe dir einen Überblick",
|
||||
parent=circle,
|
||||
minutes=15,
|
||||
contents=[("document", DocumentBlockFactory())],
|
||||
)
|
||||
|
||||
LearningSequenceFactory(title="Beobachten", parent=circle, icon="it-icon-ls-watch")
|
||||
lu = LearningUnitFactory(
|
||||
title="Fahrzeug",
|
||||
parent=circle,
|
||||
course_category=CourseCategory.objects.get(
|
||||
course_id=COURSE_TEST_ID, title="Fahrzeug"
|
||||
),
|
||||
)
|
||||
LearningContentFactory(
|
||||
title="Rafael Fasel wechselt sein Auto",
|
||||
title=f"Mediathek {title}",
|
||||
parent=circle,
|
||||
minutes=30,
|
||||
contents=[
|
||||
(
|
||||
"online_training",
|
||||
OnlineTrainingBlockFactory(
|
||||
description="In diesem Online-Training lernst du, wie du den Kundenbedarf ermittelst.",
|
||||
url="",
|
||||
"media_library",
|
||||
MediaLibraryBlockFactory(
|
||||
url=f"/media/überbetriebliche-kurse-media/category/{slugify(title)}"
|
||||
),
|
||||
)
|
||||
],
|
||||
)
|
||||
LearningContentFactory(
|
||||
title="Fachcheck Fahrzeug",
|
||||
title="Vorbereitungsauftrag",
|
||||
parent=circle,
|
||||
minutes=30,
|
||||
contents=[("test", TestBlockFactory())],
|
||||
)
|
||||
|
||||
lu = LearningUnitFactory(
|
||||
PerformanceCriteriaFactory(
|
||||
parent=CompetencePage.objects.get(competence_id="X1"),
|
||||
competence_id="X1.1",
|
||||
title="Innerhalb des Handlungsfelds «Fahrzeug» bin ich fähig, die Ziele und Pläne des Kunden zu ergründen (SOLL).",
|
||||
learning_unit=lu,
|
||||
)
|
||||
PerformanceCriteriaFactory(
|
||||
parent=CompetencePage.objects.get(competence_id="X1"),
|
||||
competence_id="X1.1",
|
||||
title="Innerhalb des Handlungsfelds «Fahrzeug» bin ich fähig, die IST-Situation des Kunden mit der geeigneten Gesprächs-/Fragetechnik zu erfassen.",
|
||||
learning_unit=lu,
|
||||
)
|
||||
|
||||
LearningSequenceFactory(title="Training", parent=circle)
|
||||
LearningUnitFactory(title="Unterlagen", parent=circle)
|
||||
LearningContentFactory(
|
||||
title="Unterlagen für den Unterricht",
|
||||
parent=circle,
|
||||
)
|
||||
LearningUnitFactory(title="Präsenztag", parent=circle)
|
||||
LearningContentFactory(
|
||||
title="Präsenztag Fahrzeug",
|
||||
parent=circle,
|
||||
contents=[
|
||||
(
|
||||
"attendance_day",
|
||||
AttendanceDayBlockFactory(),
|
||||
)
|
||||
],
|
||||
)
|
||||
LearningUnitFactory(title="Kompetenznachweis", parent=circle)
|
||||
LearningContentFactory(
|
||||
title="Wissens- und Verständnisfragen",
|
||||
parent=circle,
|
||||
)
|
||||
LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end")
|
||||
LearningUnitFactory(title="Transfer", parent=circle)
|
||||
LearningContentFactory(
|
||||
title="Reflexion",
|
||||
parent=circle,
|
||||
)
|
||||
LearningContentFactory(
|
||||
title="Überprüfen einer Motorfahrzeug-Versicherungspolice",
|
||||
parent=circle,
|
||||
contents=[
|
||||
(
|
||||
"assignment",
|
||||
AssignmentBlockFactory(
|
||||
assignment=Assignment.objects.get(
|
||||
slug__startswith="test-lehrgang-assignment-überprüfen-einer-motorfahrzeugs"
|
||||
)
|
||||
),
|
||||
)
|
||||
],
|
||||
)
|
||||
LearningContentFactory(
|
||||
title="Feedback",
|
||||
parent=circle,
|
||||
contents=[
|
||||
(
|
||||
"feedback",
|
||||
FeedbackBlockFactory(),
|
||||
)
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
def create_test_circle_reisen(lp):
|
||||
circle = CircleFactory(
|
||||
title="Reisen",
|
||||
parent=lp,
|
||||
)
|
||||
LearningSequenceFactory(title="Starten", parent=circle, icon="it-icon-ls-start")
|
||||
LearningUnitFactory(title="Einführung", parent=circle)
|
||||
LearningContentFactory(
|
||||
title="Verschaff dir einen Überblick",
|
||||
parent=circle,
|
||||
contents=[
|
||||
(
|
||||
"video",
|
||||
VideoBlockFactory(
|
||||
url="https://player.vimeo.com/video/772512710?h=30f912f15a",
|
||||
description="Willkommen im Lehrgang Versicherungsvermitler VBV",
|
||||
),
|
||||
)
|
||||
],
|
||||
)
|
||||
LearningContentFactory(
|
||||
title=f"Mediathek Reisen",
|
||||
parent=circle,
|
||||
contents=[
|
||||
(
|
||||
"media_library",
|
||||
MediaLibraryBlockFactory(
|
||||
url=f"/media/test-lehrgang-media/category/reisen"
|
||||
),
|
||||
)
|
||||
],
|
||||
)
|
||||
|
||||
LearningSequenceFactory(title="Analyse", parent=circle)
|
||||
|
||||
# analyse
|
||||
lu = LearningUnitFactory(
|
||||
title="Bedarfsanalyse, Ist- und Soll-Situation",
|
||||
parent=circle,
|
||||
course_category=CourseCategory.objects.get(
|
||||
course_id=COURSE_TEST_ID, title="Reisen"
|
||||
),
|
||||
)
|
||||
|
||||
LearningContentFactory(
|
||||
title="Reiseversicherung",
|
||||
title="Emma und Ayla campen durch Amerika - Analyse",
|
||||
parent=circle,
|
||||
minutes=240,
|
||||
contents=[("exercise", ExerciseBlockFactory())],
|
||||
)
|
||||
LearningContentFactory(
|
||||
title="Emma und Ayla campen durch Amerika",
|
||||
parent=circle,
|
||||
minutes=120,
|
||||
contents=[
|
||||
(
|
||||
"learningmodule",
|
||||
LearningModuleBlockFactory(
|
||||
url="/static/media/web_based_trainings/story-06-a-01-emma-und-ayla-campen-durch-amerika-einstieg/scormcontent/index.html"
|
||||
url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/emma-und-ayla-campen-durch-amerika-analyse-xapi-FZoZOP9y/index.html"
|
||||
),
|
||||
)
|
||||
],
|
||||
)
|
||||
|
||||
LearningSequenceFactory(title="Beenden", parent=circle, icon="it-icon-ls-end")
|
||||
LearningUnitFactory(title="Beenden", parent=circle)
|
||||
PerformanceCriteriaFactory(
|
||||
parent=CompetencePage.objects.get(competence_id="Y1"),
|
||||
competence_id=f"Y1.1",
|
||||
title=f"Ich bin fähig zu Reisen eine Gesprächsführung zu machen",
|
||||
learning_unit=lu,
|
||||
)
|
||||
PerformanceCriteriaFactory(
|
||||
parent=CompetencePage.objects.get(competence_id="Y2"),
|
||||
competence_id=f"Y2.1",
|
||||
title=f"Ich bin fähig zu Reisen eine Analyse zu machen",
|
||||
learning_unit=lu,
|
||||
)
|
||||
|
||||
# transfer
|
||||
parent = circle
|
||||
LearningSequenceFactory(title="Transfer", parent=parent, icon="it-icon-ls-end")
|
||||
LearningUnitFactory(title="Transfer, Reflexion, Feedback", parent=parent)
|
||||
LearningContentFactory(
|
||||
title="KompetenzNavi anschauen",
|
||||
parent=circle,
|
||||
minutes=30,
|
||||
contents=[("document", DocumentBlockFactory())],
|
||||
title="Auswandern: Woran muss ich denken?",
|
||||
parent=parent,
|
||||
)
|
||||
LearningContentFactory(
|
||||
title='Circle "Analyse" abschliessen',
|
||||
parent=circle,
|
||||
minutes=30,
|
||||
contents=[("document", DocumentBlockFactory())],
|
||||
title=f"Fachcheck Reisen",
|
||||
parent=parent,
|
||||
)
|
||||
LearningContentFactory(
|
||||
title="Reflexion",
|
||||
parent=parent,
|
||||
)
|
||||
LearningContentFactory(
|
||||
title="Feedback",
|
||||
parent=parent,
|
||||
contents=[
|
||||
(
|
||||
"feedback",
|
||||
FeedbackBlockFactory(),
|
||||
)
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
|
|
@ -249,32 +361,6 @@ def create_test_competence_profile():
|
|||
items=[("item", i) for i in c["items"]],
|
||||
)
|
||||
|
||||
PerformanceCriteriaFactory(
|
||||
parent=CompetencePage.objects.get(competence_id="Y1"),
|
||||
competence_id="Y1.3",
|
||||
title="Innerhalb des Handlungsfelds «Fahrzeug» bin ich fähig, die Ziele und Pläne des Kunden zu ergründen (SOLL).",
|
||||
learning_unit=LearningUnit.objects.get(
|
||||
slug="test-lehrgang-lp-circle-analyse-lu-fahrzeug"
|
||||
),
|
||||
)
|
||||
PerformanceCriteriaFactory(
|
||||
parent=CompetencePage.objects.get(competence_id="Y2"),
|
||||
competence_id="Y2.1",
|
||||
title="Innerhalb des Handlungsfelds «Fahrzeug» bin ich fähig, die IST-Situation des Kunden mit der geeigneten Gesprächs-/Fragetechnik zu erfassen.",
|
||||
learning_unit=LearningUnit.objects.get(
|
||||
slug="test-lehrgang-lp-circle-analyse-lu-fahrzeug"
|
||||
),
|
||||
)
|
||||
|
||||
PerformanceCriteriaFactory(
|
||||
parent=CompetencePage.objects.get(competence_id="Y1"),
|
||||
competence_id="Y1.3",
|
||||
title="Innerhalb des Handlungsfelds «Reisen» bin ich fähig, die Ziele und Pläne des Kunden zu ergründen (SOLL).",
|
||||
learning_unit=LearningUnit.objects.get(
|
||||
slug="test-lehrgang-lp-circle-analyse-lu-reisen"
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
def create_test_media_library():
|
||||
course = Course.objects.get(id=COURSE_TEST_ID)
|
||||
|
|
|
|||
|
|
@ -67,13 +67,7 @@ def command(course):
|
|||
create_course_uk_fr()
|
||||
|
||||
if COURSE_TEST_ID in course:
|
||||
create_test_course()
|
||||
|
||||
# course sessions
|
||||
CourseSession.objects.create(
|
||||
course_id=COURSE_TEST_ID,
|
||||
title="Test Lehrgang Session",
|
||||
)
|
||||
create_test_course(with_sessions=True)
|
||||
|
||||
|
||||
def create_versicherungsvermittlerin_course():
|
||||
|
|
|
|||
|
|
@ -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/"
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
)
|
||||
|
|
|
|||
Loading…
Reference in New Issue