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");
|
cy.manageCommand("cypress_reset");
|
||||||
|
|
||||||
login("admin", "test");
|
login("admin", "test");
|
||||||
cy.visit("/course/test-lehrgang/learn/analyse");
|
cy.visit("/course/test-lehrgang/learn/fahrzeug");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("can open circle page", () => {
|
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", () => {
|
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(
|
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();
|
).click();
|
||||||
|
|
||||||
cy.get(
|
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");
|
).should("have.class", "cy-checkbox-checked");
|
||||||
|
|
||||||
// completion data should still be there after reload
|
// completion data should still be there after reload
|
||||||
cy.reload();
|
cy.reload();
|
||||||
cy.get(
|
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");
|
).should("have.class", "cy-checkbox-checked");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("can open learning contents and complete them by continuing", () => {
|
it("can open learning contents and complete them by continuing", () => {
|
||||||
cy.get(
|
cy.get(
|
||||||
'[data-cy="test-lehrgang-lp-circle-analyse-lu-fahrzeug"] > div'
|
'[data-cy="test-lehrgang-lp-circle-fahrzeug-lc-verschaffe-dir-einen-überblick"]'
|
||||||
).should("have.class", "self-evaluation-unknown");
|
|
||||||
|
|
||||||
cy.get(
|
|
||||||
'[data-cy="test-lehrgang-lp-circle-analyse-lc-rafael-fasel-wechselt-sein-auto"]'
|
|
||||||
).click();
|
).click();
|
||||||
cy.get('[data-cy="ln-title"]').should(
|
cy.get('[data-cy="ln-title"]').should(
|
||||||
"contain",
|
"contain",
|
||||||
"Rafael Fasel wechselt sein Auto"
|
"Verschaffe dir einen Überblick"
|
||||||
);
|
);
|
||||||
cy.get('[data-cy="complete-and-continue"]').click();
|
cy.get('[data-cy="complete-and-continue"]').click();
|
||||||
|
|
||||||
cy.get('[data-cy="ls-continue-button"]').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="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="ls-continue-button"]').click();
|
||||||
|
cy.get('[data-cy="ln-title"]').should("contain", "Vorbereitungsauftrag");
|
||||||
|
cy.get('[data-cy="complete-and-continue"]').click();
|
||||||
|
|
||||||
cy.get(
|
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");
|
).should("have.class", "cy-checkbox-checked");
|
||||||
cy.get(
|
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");
|
).should("have.class", "cy-checkbox-checked");
|
||||||
|
|
||||||
cy.get(
|
cy.get(
|
||||||
'[data-cy="test-lehrgang-lp-circle-analyse-lu-fahrzeug"] > div'
|
'[data-cy="test-lehrgang-lp-circle-fahrzeug-lc-vorbereitungsauftrag-checkbox"] > .cy-checkbox-checked'
|
||||||
).should("have.class", "self-evaluation-success");
|
).should("have.class", "cy-checkbox-checked");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("continue button works", () => {
|
it("continue button works", () => {
|
||||||
|
|
@ -84,23 +66,20 @@ describe("circle page", () => {
|
||||||
|
|
||||||
cy.get('[data-cy="ln-title"]').should(
|
cy.get('[data-cy="ln-title"]').should(
|
||||||
"contain",
|
"contain",
|
||||||
'Einleitung Circle "Analyse"'
|
"Verschaffe dir einen Überblick"
|
||||||
);
|
);
|
||||||
cy.get('[data-cy="complete-and-continue"]').click();
|
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"]').should("contain", "Weiter geht's");
|
||||||
cy.get('[data-cy="ls-continue-button"]').click();
|
cy.get('[data-cy="ls-continue-button"]').click();
|
||||||
cy.get('[data-cy="ln-title"]').should(
|
cy.get('[data-cy="ln-title"]').should("contain", "Mediathek Fahrzeug");
|
||||||
"contain",
|
|
||||||
"Rafael Fasel wechselt sein Auto"
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it("can open learning content by url", () => {
|
it("can open learning content by url", () => {
|
||||||
cy.visit("/course/test-lehrgang/learn/analyse/reiseversicherung");
|
cy.visit("/course/test-lehrgang/learn/fahrzeug/mediathek-fahrzeug");
|
||||||
cy.get('[data-cy="ln-title"]').should("contain", "Reiseversicherung");
|
cy.get('[data-cy="ln-title"]').should("contain", "Mediathek Fahrzeug");
|
||||||
|
|
||||||
cy.get('[data-cy="close-learning-content"]').click();
|
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");
|
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
|
// mit mehreren Schritten
|
||||||
cy.visit("/course/test-lehrgang/learn/analyse");
|
cy.visit("/course/test-lehrgang/learn/reisen");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("self evaluation should be neutral", () => {
|
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"]')
|
.find('[data-cy="unknown"]')
|
||||||
.should("exist");
|
.should("exist");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should be able to make a happy self evaluation", () => {
|
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.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"]')
|
.find('[data-cy="success"]')
|
||||||
.should("exist");
|
.should("exist");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should be able to make a fail self evaluation", () => {
|
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.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"]')
|
.find('[data-cy="fail"]')
|
||||||
.should("exist");
|
.should("exist");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should be able to make a mixed self evaluation", () => {
|
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.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"]')
|
.find('[data-cy="fail"]')
|
||||||
.should("exist");
|
.should("exist");
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ 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
|
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
|
from wagtail.blocks import StreamValue
|
||||||
|
|
||||||
|
|
@ -283,3 +283,275 @@ def create_uk_assignments(course_id=COURSE_UK):
|
||||||
)
|
)
|
||||||
|
|
||||||
assignment.save()
|
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):
|
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"],
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,11 @@ import json
|
||||||
|
|
||||||
import wagtail_factories
|
import wagtail_factories
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
from slugify import slugify
|
||||||
from wagtail.models import Site
|
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 (
|
from vbv_lernwelt.competence.factories import (
|
||||||
CompetencePageFactory,
|
CompetencePageFactory,
|
||||||
CompetenceProfilePageFactory,
|
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.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, CourseCategory, CoursePage
|
from vbv_lernwelt.course.models import Course, CourseCategory, CoursePage, CourseSession
|
||||||
from vbv_lernwelt.learnpath.models import LearningUnit
|
|
||||||
from vbv_lernwelt.learnpath.tests.learning_path_factories import (
|
from vbv_lernwelt.learnpath.tests.learning_path_factories import (
|
||||||
|
AssignmentBlockFactory,
|
||||||
|
AttendanceDayBlockFactory,
|
||||||
CircleFactory,
|
CircleFactory,
|
||||||
DocumentBlockFactory,
|
FeedbackBlockFactory,
|
||||||
ExerciseBlockFactory,
|
|
||||||
LearningContentFactory,
|
LearningContentFactory,
|
||||||
LearningModuleBlockFactory,
|
LearningModuleBlockFactory,
|
||||||
LearningPathFactory,
|
LearningPathFactory,
|
||||||
LearningSequenceFactory,
|
LearningSequenceFactory,
|
||||||
LearningUnitFactory,
|
LearningUnitFactory,
|
||||||
OnlineTrainingBlockFactory,
|
MediaLibraryBlockFactory,
|
||||||
TestBlockFactory,
|
|
||||||
TopicFactory,
|
TopicFactory,
|
||||||
|
VideoBlockFactory,
|
||||||
)
|
)
|
||||||
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,
|
||||||
|
|
@ -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_locales_for_wagtail()
|
||||||
create_test_course_with_categories()
|
create_test_course_with_categories()
|
||||||
create_test_learning_path()
|
|
||||||
create_test_competence_profile()
|
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()
|
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):
|
def create_test_course_with_categories(apps=None, schema_editor=None):
|
||||||
if apps is not None:
|
if apps is not None:
|
||||||
|
|
@ -85,122 +103,216 @@ 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="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(
|
if include_vv:
|
||||||
title="Basis",
|
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,
|
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(
|
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(
|
LearningContentFactory(
|
||||||
title="Einführung",
|
title="Verschaffe dir einen Überblick",
|
||||||
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"',
|
|
||||||
parent=circle,
|
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(
|
LearningContentFactory(
|
||||||
title="Rafael Fasel wechselt sein Auto",
|
title=f"Mediathek {title}",
|
||||||
parent=circle,
|
parent=circle,
|
||||||
minutes=30,
|
|
||||||
contents=[
|
contents=[
|
||||||
(
|
(
|
||||||
"online_training",
|
"media_library",
|
||||||
OnlineTrainingBlockFactory(
|
MediaLibraryBlockFactory(
|
||||||
description="In diesem Online-Training lernst du, wie du den Kundenbedarf ermittelst.",
|
url=f"/media/überbetriebliche-kurse-media/category/{slugify(title)}"
|
||||||
url="",
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
LearningContentFactory(
|
LearningContentFactory(
|
||||||
title="Fachcheck Fahrzeug",
|
title="Vorbereitungsauftrag",
|
||||||
parent=circle,
|
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",
|
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,
|
parent=circle,
|
||||||
course_category=CourseCategory.objects.get(
|
course_category=CourseCategory.objects.get(
|
||||||
course_id=COURSE_TEST_ID, title="Reisen"
|
course_id=COURSE_TEST_ID, title="Reisen"
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
LearningContentFactory(
|
LearningContentFactory(
|
||||||
title="Reiseversicherung",
|
title="Emma und Ayla campen durch Amerika - Analyse",
|
||||||
parent=circle,
|
parent=circle,
|
||||||
minutes=240,
|
|
||||||
contents=[("exercise", ExerciseBlockFactory())],
|
|
||||||
)
|
|
||||||
LearningContentFactory(
|
|
||||||
title="Emma und Ayla campen durch Amerika",
|
|
||||||
parent=circle,
|
|
||||||
minutes=120,
|
|
||||||
contents=[
|
contents=[
|
||||||
(
|
(
|
||||||
"learningmodule",
|
"learningmodule",
|
||||||
LearningModuleBlockFactory(
|
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")
|
PerformanceCriteriaFactory(
|
||||||
LearningUnitFactory(title="Beenden", parent=circle)
|
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(
|
LearningContentFactory(
|
||||||
title="KompetenzNavi anschauen",
|
title="Auswandern: Woran muss ich denken?",
|
||||||
parent=circle,
|
parent=parent,
|
||||||
minutes=30,
|
|
||||||
contents=[("document", DocumentBlockFactory())],
|
|
||||||
)
|
)
|
||||||
LearningContentFactory(
|
LearningContentFactory(
|
||||||
title='Circle "Analyse" abschliessen',
|
title=f"Fachcheck Reisen",
|
||||||
parent=circle,
|
parent=parent,
|
||||||
minutes=30,
|
)
|
||||||
contents=[("document", DocumentBlockFactory())],
|
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"]],
|
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():
|
def create_test_media_library():
|
||||||
course = Course.objects.get(id=COURSE_TEST_ID)
|
course = Course.objects.get(id=COURSE_TEST_ID)
|
||||||
|
|
|
||||||
|
|
@ -67,13 +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)
|
||||||
|
|
||||||
# course sessions
|
|
||||||
CourseSession.objects.create(
|
|
||||||
course_id=COURSE_TEST_ID,
|
|
||||||
title="Test Lehrgang Session",
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def create_versicherungsvermittlerin_course():
|
def create_versicherungsvermittlerin_course():
|
||||||
|
|
|
||||||
|
|
@ -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/"
|
||||||
|
|
|
||||||
|
|
@ -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")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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",
|
||||||
|
|
|
||||||
|
|
@ -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(
|
||||||
|
|
|
||||||
|
|
@ -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")
|
||||||
|
|
|
||||||
|
|
@ -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"
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue