wip: Add student tests, change submission page

This commit is contained in:
Christian Cueni 2023-12-04 11:13:32 +01:00
parent 0fc428ff06
commit 6f9ef0f79f
4 changed files with 372 additions and 236 deletions

View File

@ -77,18 +77,24 @@ const completionTaskData = computed(() => {
return props.assignmentCompletion?.task_completion_data ?? {};
});
const canSubmit = computed(() => {
const cannotSubmit = computed(() => {
return (
!state.confirmInput ||
(!state.confirmInput && !isPraxisAssignment.value) ||
(props.assignment.assignment_type === "CASEWORK" && !state.confirmPerson)
);
});
const isCasework = computed(() =>
(
["CASEWORK", "PRAXIS_ASSIGNMENT"] as AssignmentAssignmentAssignmentTypeChoices[]
).includes(props.assignment.assignment_type)
function checkAssignmentType(
assignmentType: AssignmentAssignmentAssignmentTypeChoices[]
) {
return assignmentType.includes(props.assignment.assignment_type);
}
const isCasework = computed(() => checkAssignmentType(["CASEWORK"]));
const mayBeEvaluated = computed(() =>
checkAssignmentType(["CASEWORK", "PRAXIS_ASSIGNMENT"])
);
const isPraxisAssignment = computed(() => checkAssignmentType(["PRAXIS_ASSIGNMENT"]));
const upsertAssignmentCompletionMutation = useMutation(
UPSERT_ASSIGNMENT_COMPLETION_MUTATION
@ -127,6 +133,7 @@ const onSubmit = async () => {
<div v-if="completionStatus === 'IN_PROGRESS'">
<ItCheckbox
v-if="!isPraxisAssignment"
class="w-full border-b border-gray-400 py-10 sm:py-6"
:checkbox-item="{
label: $t('assignment.confirmSubmitResults'),
@ -136,11 +143,14 @@ const onSubmit = async () => {
data-cy="confirm-submit-results"
@toggle="state.confirmInput = !state.confirmInput"
></ItCheckbox>
<div v-if="isCasework" class="w-full border-b border-gray-400">
<div v-if="mayBeEvaluated" class="w-full border-b border-gray-400">
<ItCheckbox
v-if="mayBeEvaluated"
class="py-6"
:checkbox-item="{
label: $t('assignment.confirmSubmitPerson'),
label: isPraxisAssignment
? $t('a.confirmSubmitPersonPraxisAssignment')
: $t('assignment.confirmSubmitPerson'),
value: 'value',
checked: state.confirmPerson,
}"
@ -165,7 +175,7 @@ const onSubmit = async () => {
{{ $t("assignment.showAssessmentDocument") }}
</a>
</div>
<p v-if="isCasework && props.submissionDeadlineStart" class="pt-6">
<p v-if="mayBeEvaluated && props.submissionDeadlineStart" class="pt-6">
{{ $t("assignment.dueDateSubmission") }}
<DateEmbedding
:single-date="dayjs(props.submissionDeadlineStart)"
@ -175,7 +185,7 @@ const onSubmit = async () => {
class="mt-6"
variant="blue"
size="large"
:disabled="canSubmit"
:disabled="cannotSubmit"
data-cy="submit-assignment"
@click="onSubmit"
>

View File

@ -1,6 +1,121 @@
import { TEST_STUDENT1_USER_ID } from "../../consts";
import { login } from "../helpers";
function completePraxisAssignment(selectExpert = false) {
cy.visit("/course/test-lehrgang/learn/reisen/mein-kundenstamm");
cy.learningContentMultiLayoutNextStep();
cy.testLearningContentTitle(
"Teilaufgabe 1: Filtere nach Kundeneigenschaften"
);
cy.get('[data-cy="it-textarea-user-text-input-1"]')
.clear()
.type("Hallo Teilaufgabe 1.1");
cy.wait(550);
cy.get('[data-cy="it-textarea-user-text-input-2"]')
.clear()
.type("Hallo Teilaufgabe 1.2");
cy.wait(550);
cy.get('[data-cy="it-textarea-user-text-input-3"]')
.clear()
.type("Hallo Teilaufgabe 1.3");
cy.wait(550);
cy.get('[data-cy="it-textarea-user-text-input-4"]')
.clear()
.type("Hallo Teilaufgabe 1.4");
cy.wait(550);
cy.get('[data-cy="it-textarea-user-text-input-5"]')
.clear()
.type("Hallo Teilaufgabe 1.5");
// wait because of input debounce
cy.wait(550);
cy.learningContentMultiLayoutNextStep();
// step 2
cy.testLearningContentTitle("Teilaufgabe 2: Filtere nach Versicherungen");
cy.get('[data-cy="it-textarea-user-text-input-1"]')
.clear()
.type("Hallo Teilaufgabe 2.1");
cy.wait(550);
cy.get('[data-cy="it-textarea-user-text-input-2"]')
.clear()
.type("Hallo Teilaufgabe 2.2");
cy.wait(550);
cy.get('[data-cy="it-textarea-user-text-input-3"]')
.clear()
.type("Hallo Teilaufgabe 2.3");
cy.wait(550);
cy.get('[data-cy="it-textarea-user-text-input-4"]')
.clear()
.type("Hallo Teilaufgabe 2.4");
// wait because of input debounce
cy.wait(550);
cy.learningContentMultiLayoutNextStep();
// check that results are stored on server
// load AssignmentCompletion from DB and check
cy.loadAssignmentCompletion("assignment_user_id", TEST_STUDENT1_USER_ID).then(
(ac) => {
expect(ac.completion_status).to.equal("IN_PROGRESS");
expect(JSON.stringify(ac.completion_data)).to.include(
"Hallo Teilaufgabe 2.1"
);
}
);
// step 3
cy.testLearningContentTitle(
"Teilaufgabe 3: Filtere nach besonderen Ereignissen"
);
cy.get('[data-cy="it-textarea-user-text-input-1"]')
.clear()
.type("Hallo Teilaufgabe 3.1");
cy.wait(550);
cy.get('[data-cy="it-textarea-user-text-input-2"]')
.clear()
.type("Hallo Teilaufgabe 3.2");
// wait because of input debounce
cy.wait(550);
cy.learningContentMultiLayoutNextStep();
// step 4
cy.testLearningContentTitle("Teilaufgabe 4: Kundentelefonate");
cy.get('[data-cy="it-textarea-user-text-input-0"]')
.clear()
.type("Hallo Teilaufgabe 4.1");
// wait because of input debounce
cy.wait(550);
cy.learningContentMultiLayoutNextStep();
// step 5
cy.testLearningContentTitle("Teilaufgabe 5: Kundentelefonate2");
cy.get('[data-cy="it-textarea-user-text-input-0"]')
.clear()
.type("Hallo Teilaufgabe 5.1");
// wait because of input debounce
cy.wait(550);
cy.learningContentMultiLayoutNextStep();
cy.get('[data-cy="confirm-submit-results"]').should("not.exist");
cy.get('[data-cy="confirm-submit-person"]').should(
"contain",
"Folgende Person soll mir Feedback zu meinen Ergebnissen geben."
);
if (selectExpert) {
cy.get('[data-cy="confirm-submit-person"]').click();
}
cy.get('[data-cy="submit-assignment"]').click();
cy.get('[data-cy="success-text"]').should("exist");
// app goes back to circle view -> check if assignment is marked as completed
cy.url().should((url) => {
expect(url).to.match(/\/reisen#lu-reisen?$/);
});
cy.reload();
cy.get(
'[data-cy="test-lehrgang-lp-circle-reisen-lc-mein-kundenstamm-checkbox"]'
).should("have.class", "cy-checked");
}
describe("assignmentStudent.cy.js", () => {
beforeEach(() => {
cy.manageCommand("cypress_reset");
@ -10,6 +125,7 @@ describe("assignmentStudent.cy.js", () => {
);
});
describe("Assignment", () => {
it("can open assignment", () => {
cy.testLearningContentTitle("Einleitung");
cy.testLearningContentSubtitle(
@ -199,6 +315,10 @@ describe("assignmentStudent.cy.js", () => {
cy.wait(550);
cy.learningContentMultiLayoutNextStep();
cy.get('[data-cy="confirm-submit-person"]').should(
"contain",
"Ja, die folgende Person soll meine Ergebnisse bewerten."
);
cy.get('[data-cy="confirm-submit-results"] label').click();
cy.get('[data-cy="confirm-submit-person"]').click();
cy.get('[data-cy="submit-assignment"]').click();
@ -241,3 +361,11 @@ describe("assignmentStudent.cy.js", () => {
});
});
});
describe.only("Praxis Assignment", () => {
it("can make complete assignment without expert", () =>
completePraxisAssignment());
it("can make complete assignment with expert", () =>
completePraxisAssignment(true));
});
});

View File

@ -1,7 +1,3 @@
from wagtail.blocks import StreamValue
from wagtail.blocks.list_block import ListBlock, ListValue
from wagtail.rich_text import RichText
from vbv_lernwelt.assignment.models import (
AssignmentListPage,
AssignmentType,
@ -24,6 +20,9 @@ from vbv_lernwelt.course.consts import (
COURSE_VERSICHERUNGSVERMITTLERIN_ID,
)
from vbv_lernwelt.course.models import CoursePage
from wagtail.blocks import StreamValue
from wagtail.blocks.list_block import ListBlock, ListValue
from wagtail.rich_text import RichText
def create_uk_fahrzeug_casework(course_id=COURSE_UK, competence_certificate=None):

View File

@ -9,7 +9,8 @@ from vbv_lernwelt.assignment.creators.create_assignments import (
create_uk_condition_acceptance,
create_uk_fahrzeug_casework,
create_uk_fahrzeug_prep_assignment,
create_uk_reflection, create_vv_gewinnen_casework,
create_uk_reflection,
create_vv_gewinnen_casework,
)
from vbv_lernwelt.assignment.models import (
Assignment,
@ -112,9 +113,7 @@ def create_test_course(include_uk=True, include_vv=True, with_sessions=False):
)
if include_vv:
create_vv_gewinnen_casework(
course_id=COURSE_TEST_ID
)
create_vv_gewinnen_casework(course_id=COURSE_TEST_ID)
create_test_learning_path(include_uk=include_uk, include_vv=include_vv)
create_test_media_library()