Merged in feature/berufsbilnder-cypress (pull request #378)
Feature/berufsbilnder cypress * Berufsbildner cypress test * Fix tests
This commit is contained in:
parent
f8f9ed86dc
commit
0f6ec66122
|
|
@ -40,6 +40,7 @@ onMounted(async () => {
|
|||
<div :class="['flex flex-row space-x-3 bg-white', slim ? '' : 'pb-6']">
|
||||
<div
|
||||
class="flex h-[74px] items-center justify-center py-1 pr-3 text-3xl font-bold"
|
||||
data-cy="dashboard.mentor.menteeCountValue"
|
||||
>
|
||||
<span>{{ menteeCount }}</span>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -37,10 +37,13 @@ onMounted(async () => {
|
|||
});
|
||||
|
||||
const averageGrade = computed(() => {
|
||||
return percentToRoundedGrade(
|
||||
assignmentStats.value?.summary.average_evaluation_percent ?? 0,
|
||||
false
|
||||
);
|
||||
if (assignmentStats.value?.summary.average_evaluation_percent) {
|
||||
return percentToRoundedGrade(
|
||||
assignmentStats.value?.summary.average_evaluation_percent ?? 0,
|
||||
false
|
||||
);
|
||||
}
|
||||
return null;
|
||||
});
|
||||
</script>
|
||||
|
||||
|
|
@ -59,7 +62,7 @@ const averageGrade = computed(() => {
|
|||
>
|
||||
<template #title>{{ $t("a.Kompetenznachweise") }}</template>
|
||||
<template #content>
|
||||
<div class="flex items-center gap-4">
|
||||
<div v-if="averageGrade" class="flex items-center gap-4">
|
||||
<div class="min-w-12 text-center">
|
||||
<div
|
||||
class="heading-2 rounded bg-green-500 p-4"
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ function hasActionButton(): boolean {
|
|||
</a>
|
||||
</div>
|
||||
<p>
|
||||
<span class="rounded bg-gray-300 px-2 py-1">
|
||||
<span class="rounded bg-gray-300 px-2 py-1" data-cy="panel-role-key">
|
||||
{{ $t(courseConfig.role_key) }}
|
||||
</span>
|
||||
<router-link
|
||||
|
|
|
|||
|
|
@ -117,18 +117,21 @@ function getFilteredItems() {
|
|||
v-model="regionFilterValue"
|
||||
class="min-w-[12rem]"
|
||||
:items="regionFilter"
|
||||
data-cy="select-region"
|
||||
borderless
|
||||
></ItDropdownSelect>
|
||||
<ItDropdownSelect
|
||||
v-model="sessionFilterValue"
|
||||
class="min-w-[12rem]"
|
||||
:items="sessionFilter"
|
||||
data-cy="select-session"
|
||||
borderless
|
||||
></ItDropdownSelect>
|
||||
<ItDropdownSelect
|
||||
v-model="generationFilterValue"
|
||||
class="min-w-[12rem]"
|
||||
:items="generationFilter"
|
||||
data-cy="select-generation"
|
||||
borderless
|
||||
></ItDropdownSelect>
|
||||
<ItDropdownSelect
|
||||
|
|
@ -136,6 +139,7 @@ function getFilteredItems() {
|
|||
v-model="circleFilterValue"
|
||||
class="min-w-[12rem]"
|
||||
:items="circleFilter"
|
||||
data-cy="select-circle"
|
||||
borderless
|
||||
></ItDropdownSelect>
|
||||
</div>
|
||||
|
|
@ -145,6 +149,7 @@ function getFilteredItems() {
|
|||
v-for="item in filteredItems"
|
||||
:key="item._id"
|
||||
class="mx-6 border-t border-gray-500 first:border-t-0"
|
||||
data-cy="statistics-filter-list-item"
|
||||
>
|
||||
<div class="py-4">
|
||||
<slot :item="item"></slot>
|
||||
|
|
|
|||
|
|
@ -736,9 +736,28 @@ export function useAllCompetenceCertificates(userId: string, courseSlug: string)
|
|||
})
|
||||
);
|
||||
const isLoaded = computed(() => !certificateQueries.some((q) => q.fetching.value));
|
||||
const competenceCertificates = computed(() =>
|
||||
const allCompetenceCertificates = computed(() =>
|
||||
mergeCompetenceCertificates(competenceCertificatesPerCs.value.flat())
|
||||
);
|
||||
|
||||
// it is possible that because of caching (?) the query returns completions for other
|
||||
// users, when the logged in user is Berufsbildner, so filter completions by user
|
||||
const competenceCertificates = computed(() => {
|
||||
return (allCompetenceCertificates.value ?? []).map((cc) => {
|
||||
return {
|
||||
...cc,
|
||||
assignments: cc.assignments.map((a) => {
|
||||
return {
|
||||
...a,
|
||||
completions: (a.completions ?? []).filter(
|
||||
(c) => c.assignment_user.id === userId
|
||||
),
|
||||
};
|
||||
}),
|
||||
};
|
||||
});
|
||||
});
|
||||
|
||||
return {
|
||||
competenceCertificates,
|
||||
isLoaded,
|
||||
|
|
|
|||
|
|
@ -15,13 +15,14 @@ const props = defineProps<{
|
|||
log.debug("CompetenceCertificateDetailPage setup", props);
|
||||
|
||||
const { id: currentUserId } = useUserStore();
|
||||
|
||||
const { competenceCertificates } = useAllCompetenceCertificates(
|
||||
props.userId ?? currentUserId,
|
||||
props.courseSlug
|
||||
);
|
||||
|
||||
const certificate = computed(() => {
|
||||
if (!competenceCertificates) {
|
||||
if (!competenceCertificates.value) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ log.debug("CompetenceCertificateListPage setup", props);
|
|||
|
||||
const route = useRoute();
|
||||
const { id: currentUserId } = useUserStore();
|
||||
|
||||
const { competenceCertificates } = useAllCompetenceCertificates(
|
||||
props.userId ?? currentUserId,
|
||||
props.courseSlug
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import { percentToRoundedGrade } from "@/services/assignmentService";
|
|||
import type { CompetenceCertificate, CompetenceCertificateAssignment } from "@/types";
|
||||
import dayjs from "dayjs";
|
||||
import _ from "lodash";
|
||||
import log from "loglevel";
|
||||
|
||||
export function assignmentsMaxEvaluationPoints(
|
||||
assignments: CompetenceCertificateAssignment[]
|
||||
|
|
@ -103,7 +104,7 @@ export function mergeCompetenceCertificates(
|
|||
groupedCompetenceCertificates[certificate.id].push(certificate);
|
||||
});
|
||||
|
||||
console.log(
|
||||
log.debug(
|
||||
`Found ${Object.keys(groupedCompetenceCertificates).length} competence certificates over all course sessions`
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -22,7 +22,9 @@ const displayDueDates = computed(() => {
|
|||
</div>
|
||||
<div v-else>
|
||||
<section class="border-b p-8">
|
||||
<h3 class="mb-4">{{ dashboardPersons.length }} {{ $t("a.Personen") }}</h3>
|
||||
<h3 class="mb-4" data-cy="num-dashboard-persons">
|
||||
{{ dashboardPersons.length }} {{ $t("a.Personen") }}
|
||||
</h3>
|
||||
<div>
|
||||
<router-link class="btn-secondary" to="/dashboard/persons">
|
||||
{{ $t("a.Alle Personen anzeigen") }}
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ const learningContentAssignment = computed(() => {
|
|||
<router-link
|
||||
class="btn-text inline-flex items-center pl-0"
|
||||
:to="`/statistic/${props.agentRole}/${props.courseSlug}/assignment`"
|
||||
data-cy="back-button"
|
||||
>
|
||||
<it-icon-arrow-left />
|
||||
<span>{{ $t("general.back") }}</span>
|
||||
|
|
|
|||
|
|
@ -62,6 +62,10 @@ const totalAverageGrade = computed(() => {
|
|||
(c) => c?.completion_status == "EVALUATION_SUBMITTED"
|
||||
);
|
||||
|
||||
if (relevantCompletions.length === 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
const averagePercent =
|
||||
_.sumBy(relevantCompletions, (c) => c?.evaluation_percent ?? 0) /
|
||||
relevantCompletions.length;
|
||||
|
|
@ -73,7 +77,6 @@ const totalAverageGrade = computed(() => {
|
|||
return averagePercent * (assignment.competence_certificate_weight ?? 1);
|
||||
}
|
||||
);
|
||||
|
||||
return percentToRoundedGrade(
|
||||
_.sum(assignmentAverageGrades) / (divisor ?? 1),
|
||||
false
|
||||
|
|
@ -118,6 +121,7 @@ onMounted(async () => {
|
|||
<router-link
|
||||
class="btn-text inline-flex items-center pl-0"
|
||||
:to="`/statistic/${props.agentRole}/${props.courseSlug}/competence-grade`"
|
||||
data-cy="back-button"
|
||||
>
|
||||
<it-icon-arrow-left />
|
||||
<span>{{ $t("general.back") }}</span>
|
||||
|
|
@ -128,7 +132,10 @@ onMounted(async () => {
|
|||
<div class="border-b bg-white px-6 py-6">
|
||||
{{ courseSession?.session_title }}
|
||||
</div>
|
||||
<div class="heading-3 border-b bg-white px-6 py-6">
|
||||
<div
|
||||
class="heading-3 border-b bg-white px-6 py-6"
|
||||
data-cy="total-average-grade"
|
||||
>
|
||||
{{ $t("a.Durchschnittsnote") }}:
|
||||
{{ totalAverageGrade }}
|
||||
</div>
|
||||
|
|
@ -136,7 +143,7 @@ onMounted(async () => {
|
|||
<div
|
||||
v-for="person in participants"
|
||||
:key="person.user_id"
|
||||
data-cy="person"
|
||||
:data-cy="`person-${person.user_id}`"
|
||||
class="flex flex-col justify-between gap-4 border-b p-2 last:border-b-0 md:flex-row md:items-center md:justify-between md:gap-16"
|
||||
>
|
||||
<div class="w-full flex-auto md:w-1/2">
|
||||
|
|
|
|||
|
|
@ -174,7 +174,7 @@ const courseSessionCompetenceAssignments = computed(() => {
|
|||
:hide-circle-filter="true"
|
||||
>
|
||||
<template #header>
|
||||
<div class="heading-3 border-b px-6 py-4">
|
||||
<div class="heading-3 border-b px-6 py-4" data-cy="average-grade-header">
|
||||
{{ $t("a.Durchschnittsnote") }}: {{ totalAverageGrade }}
|
||||
</div>
|
||||
</template>
|
||||
|
|
@ -182,6 +182,7 @@ const courseSessionCompetenceAssignments = computed(() => {
|
|||
<div
|
||||
v-if="isGroupedAssignmentEntry(item)"
|
||||
class="flex flex-col justify-between gap-4 border-b last:border-b-0 md:flex-row md:items-center md:justify-between md:gap-16"
|
||||
:data-cy="`competence-grade@${item.course_session_id}-${item.competenceCertificateTitle}`"
|
||||
>
|
||||
<div class="w-full flex-auto md:w-1/2">
|
||||
<span class="text-bold">
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ const itemDetailUrl = (item: AssignmentStatisticsRecordType) => {
|
|||
<template #default="{ item }">
|
||||
<div
|
||||
class="flex justify-between"
|
||||
:data-cy="(item as AssignmentStatisticsRecordType).assignment_title"
|
||||
:data-cy="`${(item as AssignmentStatisticsRecordType).assignment_title}@${(item as AssignmentStatisticsRecordType).course_session_id}`"
|
||||
>
|
||||
<div>
|
||||
<h4 class="font-bold">
|
||||
|
|
@ -123,6 +123,7 @@ const itemDetailUrl = (item: AssignmentStatisticsRecordType) => {
|
|||
<router-link
|
||||
class="underline"
|
||||
:to="itemDetailUrl(item as AssignmentStatisticsRecordType)"
|
||||
data-cy="details-link"
|
||||
>
|
||||
{{ $t("a.Details anschauen") }}
|
||||
</router-link>
|
||||
|
|
|
|||
|
|
@ -84,6 +84,7 @@ const route = useRoute();
|
|||
entry.routeMatch.includes(convertRouteRecordNameToString(record?.name))
|
||||
),
|
||||
}"
|
||||
:data-cy="`side-menu-${entry.routeMatch[0]}`"
|
||||
>
|
||||
<span>{{ $t(entry.label) }}</span>
|
||||
</router-link>
|
||||
|
|
|
|||
|
|
@ -401,6 +401,9 @@ export interface CompetenceCertificateAssignment extends BaseCourseWagtailPage {
|
|||
| null;
|
||||
completions: {
|
||||
id: string;
|
||||
assignment_user: {
|
||||
id: string;
|
||||
};
|
||||
completion_status: AssignmentCompletionStatus;
|
||||
evaluation_submitted_at: string | null;
|
||||
evaluation_points: number | null;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,155 @@
|
|||
import { login } from "../helpers";
|
||||
import {
|
||||
TEST_COURSE_SESSION_ZURICH_ID,
|
||||
TEST_STUDENT1_USER_ID,
|
||||
TEST_STUDENT1_VV_USER_ID,
|
||||
TEST_STUDENT2_USER_ID,
|
||||
} from "../../consts";
|
||||
|
||||
function selectDropboxItem(dropboxSelector, item) {
|
||||
cy.get(dropboxSelector).click();
|
||||
cy.get(dropboxSelector).contains(item).click();
|
||||
}
|
||||
|
||||
describe("berufsbildner.cy.js", () => {
|
||||
beforeEach(() => {
|
||||
cy.manageCommand(
|
||||
`cypress_reset --create-assignment-evaluation --assignment-evaluation-scores 4,6,4,3,2 --assignment-points-deducted 3 --create-edoniq-test-results 19 24 8 --edoniq-user-id ${TEST_STUDENT2_USER_ID} --edoniq-course-session-id ${TEST_COURSE_SESSION_ZURICH_ID}`,
|
||||
);
|
||||
});
|
||||
|
||||
it("check data on dashboard", () => {
|
||||
login("test-berufsbildner1@example.com", "test");
|
||||
cy.visit("/");
|
||||
|
||||
cy.get('[data-cy="panel-role-key"]').should("contain", "Berufsbildner");
|
||||
|
||||
cy.get('[data-cy="num-dashboard-persons"]').should("contain", "3 Personen");
|
||||
|
||||
cy.get('[data-cy="dashboard.stats.competenceGrades"]').should(
|
||||
"contain",
|
||||
"3.81",
|
||||
);
|
||||
|
||||
cy.get('[data-cy="dashboard.stats.assignments"]').should("contain", "17%");
|
||||
cy.get('[data-cy="dashboard.stats.assignments"]').should(
|
||||
"contain",
|
||||
"2 Elemente abgeschlossen",
|
||||
);
|
||||
|
||||
cy.get('[data-cy="dashboard.mentor.menteeCountValue"]').should(
|
||||
"contain",
|
||||
"3",
|
||||
);
|
||||
});
|
||||
|
||||
it("check competence grades with subpages", () => {
|
||||
login("test-berufsbildner1@example.com", "test");
|
||||
cy.visit("/");
|
||||
|
||||
cy.get(
|
||||
'[data-cy="dashboard.stats.competenceGrades"] [data-cy="basebox.detailsLink"]',
|
||||
).click();
|
||||
|
||||
// check average grade filtered by dropbox selects
|
||||
cy.get('[data-cy="average-grade-header"]').should("contain", "3.81");
|
||||
|
||||
selectDropboxItem('[data-cy="select-session"]', "Bern");
|
||||
cy.get('[data-cy="average-grade-header"]').should("contain", "4.33");
|
||||
|
||||
selectDropboxItem('[data-cy="select-session"]', "Zürich");
|
||||
cy.get('[data-cy="average-grade-header"]').should("contain", "3.29");
|
||||
|
||||
selectDropboxItem('[data-cy="select-session"]', "Alle");
|
||||
cy.get('[data-cy="average-grade-header"]').should("contain", "3.81");
|
||||
|
||||
// go to competence certificate detail page
|
||||
cy.get(
|
||||
'[data-cy="competence-grade@-1-Kompetenznachweis 1"] [data-cy="basebox.detailsLink"]',
|
||||
).click();
|
||||
cy.get('[data-cy="total-average-grade"]').should("contain", "4.33");
|
||||
cy.get(`[data-cy="person-${TEST_STUDENT1_USER_ID}"]`).should(
|
||||
"contain",
|
||||
"4.33",
|
||||
);
|
||||
cy.get('[data-cy="back-button"]').click();
|
||||
|
||||
cy.get(
|
||||
'[data-cy="competence-grade@-2-Kompetenznachweis 1"] [data-cy="basebox.detailsLink"]',
|
||||
).click();
|
||||
cy.get('[data-cy="total-average-grade"]').should("contain", "3.29");
|
||||
|
||||
// open student profile link
|
||||
cy.get(`[data-cy="person-${TEST_STUDENT2_USER_ID}"]`)
|
||||
.find('[data-cy="person-learning-path-link"]')
|
||||
.click();
|
||||
|
||||
cy.get('[data-cy="profileCompetence"]').click();
|
||||
cy.get('[data-cy="side-menu-competenceCertificates"]').click();
|
||||
|
||||
cy.get('[data-cy="certificate-total-grade"]').should(
|
||||
"contain",
|
||||
"Note: 3.5",
|
||||
);
|
||||
cy.get(
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-grade-percent"]',
|
||||
).should("contain", "3.29");
|
||||
});
|
||||
|
||||
it("check competence elements with subpages", () => {
|
||||
login("test-berufsbildner1@example.com", "test");
|
||||
cy.visit("/");
|
||||
|
||||
cy.get(
|
||||
'[data-cy="dashboard.stats.assignments"] [data-cy="basebox.detailsLink"]',
|
||||
).click();
|
||||
|
||||
// check assignment filter
|
||||
cy.get('[data-cy="statistics-filter-list-item"]').should("have.length", 4);
|
||||
selectDropboxItem('[data-cy="select-session"]', "Bern");
|
||||
cy.get('[data-cy="statistics-filter-list-item"]').should("have.length", 2);
|
||||
cy.get(
|
||||
'[data-cy="Überprüfen einer Motorfahrzeugs-Versicherungspolice@-1"]',
|
||||
).should("contain", "1 von 3 bestanden");
|
||||
|
||||
selectDropboxItem('[data-cy="select-session"]', "Zürich");
|
||||
cy.get('[data-cy="statistics-filter-list-item"]').should("have.length", 2);
|
||||
cy.get(
|
||||
'[data-cy="Edoniq Wissens- und Verständisfragen - Circle Fahrzeug (Demo)@-2"]',
|
||||
).should("contain", "0 von 1 bestanden");
|
||||
|
||||
selectDropboxItem('[data-cy="select-session"]', "Alle");
|
||||
cy.get('[data-cy="statistics-filter-list-item"]').should("have.length", 4);
|
||||
|
||||
// check detail values for Student 1
|
||||
cy.get(
|
||||
'[data-cy="Überprüfen einer Motorfahrzeugs-Versicherungspolice@-1"] [data-cy="details-link"]',
|
||||
).click();
|
||||
|
||||
cy.get('[data-cy="Student1"]').should("contain", "Bewertung freigegeben");
|
||||
cy.get('[data-cy="Student1"]').should("contain", "16 von 24 Punkten");
|
||||
cy.get('[data-cy="Student1"]').should("contain", "67%");
|
||||
cy.get('[data-cy="Student1"] [data-cy="show-results"]').click();
|
||||
|
||||
cy.get(
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-grade"]',
|
||||
).should("contain", "4.5");
|
||||
cy.get(
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-grade-percent"]',
|
||||
).should("contain", "4.33");
|
||||
cy.get('[data-cy="back-button"]').click();
|
||||
cy.get(".heading-2").should(
|
||||
"contain",
|
||||
"Überprüfen einer Motorfahrzeug-Versicherungspolice",
|
||||
);
|
||||
cy.get('[data-cy="back-button"]').click();
|
||||
|
||||
// check detail values for Student 2
|
||||
cy.get(
|
||||
'[data-cy="Edoniq Wissens- und Verständisfragen - Circle Fahrzeug (Demo)@-2"] [data-cy="details-link"]',
|
||||
).click();
|
||||
cy.get('[data-cy="Student2"]').should("contain", "Bewertung freigegeben");
|
||||
cy.get('[data-cy="Student2"]').should("contain", "11 von 24 Punkten (46%)");
|
||||
cy.get('[data-cy="Student2"]').should("contain", "Nicht bestanden");
|
||||
});
|
||||
});
|
||||
|
|
@ -1,392 +1,404 @@
|
|||
import { login } from "../helpers"
|
||||
import { login } from "../helpers";
|
||||
|
||||
describe("competenceCertificate.cy.js", () => {
|
||||
beforeEach(() => { })
|
||||
beforeEach(() => {});
|
||||
|
||||
it("check without points", () => {
|
||||
cy.manageCommand("cypress_reset")
|
||||
login("test-student1@example.com", "test")
|
||||
cy.visit("/course/test-lehrgang/competence")
|
||||
cy.manageCommand("cypress_reset");
|
||||
login("test-student1@example.com", "test");
|
||||
cy.visit("/course/test-lehrgang/competence");
|
||||
|
||||
cy.get('[data-cy="certificate-total-points-text"]').contains(
|
||||
"Der Punktestand wird zu einem späteren Zeitpunkt berechnet."
|
||||
)
|
||||
"Der Punktestand wird zu einem späteren Zeitpunkt berechnet.",
|
||||
);
|
||||
|
||||
cy.get(
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1"]'
|
||||
).and("contain", "0 von 2 Kompetenznachweis-Elementen")
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1"]',
|
||||
).and("contain", "0 von 2 Kompetenznachweis-Elementen");
|
||||
|
||||
// check on certificates page
|
||||
cy.get('[data-cy="certificates-show-all-button"]').click()
|
||||
cy.get('[data-cy="certificates-show-all-button"]').click();
|
||||
cy.get('[data-cy="certificate-total-points-text"]').contains(
|
||||
"Der Punktestand wird zu einem späteren Zeitpunkt berechnet."
|
||||
)
|
||||
"Der Punktestand wird zu einem späteren Zeitpunkt berechnet.",
|
||||
);
|
||||
|
||||
cy.get(
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1"]'
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1"]',
|
||||
)
|
||||
.should(
|
||||
"contain",
|
||||
"Der Punktestand wird zu einem späteren Zeitpunkt berechnet."
|
||||
"Der Punktestand wird zu einem späteren Zeitpunkt berechnet.",
|
||||
)
|
||||
.and("contain", "0 von 2 Kompetenznachweis-Elementen")
|
||||
.and("contain", "0 von 2 Kompetenznachweis-Elementen");
|
||||
|
||||
// check certificate detail page
|
||||
cy.get(
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-detail-link"]'
|
||||
).click()
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-detail-link"]',
|
||||
).click();
|
||||
|
||||
cy.get(
|
||||
'[data-cy="assignment-test-lehrgang-assignment-überprüfen-einer-motorfahrzeugs-versicherungspolice"]'
|
||||
).should("contain", "Höchstpunktzahl")
|
||||
'[data-cy="assignment-test-lehrgang-assignment-überprüfen-einer-motorfahrzeugs-versicherungspolice"]',
|
||||
).should("contain", "Höchstpunktzahl");
|
||||
cy.get(
|
||||
'[data-cy="assignment-test-lehrgang-assignment-edoniq-wissens-und-verständisfragen-circle-fahrzeug-demo"]'
|
||||
).should("contain", "Höchstpunktzahl")
|
||||
})
|
||||
'[data-cy="assignment-test-lehrgang-assignment-edoniq-wissens-und-verständisfragen-circle-fahrzeug-demo"]',
|
||||
).should("contain", "Höchstpunktzahl");
|
||||
});
|
||||
|
||||
it("check with finished passed edoniq test", () => {
|
||||
cy.manageCommand(
|
||||
"cypress_reset --create-assignment-completion --create-edoniq-test-results 19 24 0"
|
||||
)
|
||||
login("test-student1@example.com", "test")
|
||||
cy.visit("/course/test-lehrgang/competence")
|
||||
"cypress_reset --create-assignment-completion --create-edoniq-test-results 19 24 0",
|
||||
);
|
||||
login("test-student1@example.com", "test");
|
||||
cy.visit("/course/test-lehrgang/competence");
|
||||
|
||||
cy.get('[data-cy="certificate-total-points-text"]').contains(
|
||||
"Erfahrungsnote üK: 5"
|
||||
)
|
||||
"Erfahrungsnote üK: 5",
|
||||
);
|
||||
|
||||
cy.get(
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1"]'
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1"]',
|
||||
)
|
||||
.should("contain", "Note: 5")
|
||||
.and("contain", "1 von 2 Kompetenznachweis-Elementen")
|
||||
.and("contain", "1 von 2 Kompetenznachweis-Elementen");
|
||||
|
||||
// check on certificates page
|
||||
cy.get('[data-cy="certificates-show-all-button"]').click()
|
||||
cy.get('[data-cy="certificates-show-all-button"]').click();
|
||||
cy.get('[data-cy="certificate-total-points-text"]')
|
||||
.should("contain", "Erfahrungsnote üK")
|
||||
.and("contain", "Zwischenstand")
|
||||
cy.get('[data-cy="certificate-total-grade"]').should("contain", "Note: 5")
|
||||
.and("contain", "Zwischenstand");
|
||||
cy.get('[data-cy="certificate-total-grade"]').should("contain", "Note: 5");
|
||||
|
||||
cy.get(
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-grade"]'
|
||||
).should("contain", "Note: 5")
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-grade"]',
|
||||
).should("contain", "Note: 5");
|
||||
cy.get(
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-grade-percent"]'
|
||||
).should("contain", "Ungerundete Note: 4.96")
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-grade-percent"]',
|
||||
).should("contain", "Ungerundete Note: 4.96");
|
||||
cy.get(
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1"]'
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1"]',
|
||||
)
|
||||
.and("contain", "Zwischenstand")
|
||||
.and("contain", "1 von 2 Kompetenznachweis-Elementen")
|
||||
.and("contain", "1 von 2 Kompetenznachweis-Elementen");
|
||||
|
||||
// check certificate detail page
|
||||
cy.get(
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-detail-link"]'
|
||||
).click()
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-detail-link"]',
|
||||
).click();
|
||||
|
||||
cy.get(
|
||||
'[data-cy="assignment-test-lehrgang-assignment-überprüfen-einer-motorfahrzeugs-versicherungspolice"]'
|
||||
'[data-cy="assignment-test-lehrgang-assignment-überprüfen-einer-motorfahrzeugs-versicherungspolice"]',
|
||||
)
|
||||
.should("contain", "Höchstpunktzahl")
|
||||
.and("contain", "Ergebnisse abgegeben")
|
||||
.and("contain", "Ergebnisse abgegeben");
|
||||
cy.get(
|
||||
'[data-cy="assignment-test-lehrgang-assignment-edoniq-wissens-und-verständisfragen-circle-fahrzeug-demo"]'
|
||||
'[data-cy="assignment-test-lehrgang-assignment-edoniq-wissens-und-verständisfragen-circle-fahrzeug-demo"]',
|
||||
)
|
||||
.should("contain", "19")
|
||||
.and("contain", "Bewertung freigegeben")
|
||||
.and("not.contain", "Nicht Bestanden")
|
||||
.and("not.contain", "Nicht Bestanden");
|
||||
|
||||
// it can open learning content page directly
|
||||
cy.get(
|
||||
'[data-cy="assignment-test-lehrgang-assignment-edoniq-wissens-und-verständisfragen-circle-fahrzeug-demo"] [data-cy="open-learning-content"]'
|
||||
).click()
|
||||
'[data-cy="assignment-test-lehrgang-assignment-edoniq-wissens-und-verständisfragen-circle-fahrzeug-demo"] [data-cy="open-learning-content"]',
|
||||
).click();
|
||||
cy.get('[data-cy="test-result"]')
|
||||
.should("contain", "19 von 24 Punkten")
|
||||
.and("contain", "79%")
|
||||
})
|
||||
.and("contain", "79%");
|
||||
});
|
||||
|
||||
it("check with finished failed edoniq test", () => {
|
||||
cy.manageCommand(
|
||||
"cypress_reset --create-assignment-completion --create-edoniq-test-results 10 24 0"
|
||||
)
|
||||
login("test-student1@example.com", "test")
|
||||
"cypress_reset --create-assignment-completion --create-edoniq-test-results 10 24 0",
|
||||
);
|
||||
login("test-student1@example.com", "test");
|
||||
|
||||
// go to certificate detail page
|
||||
cy.visit(
|
||||
"/course/test-lehrgang/competence/certificates/kompetenznachweis-1"
|
||||
)
|
||||
"/course/test-lehrgang/competence/certificates/kompetenznachweis-1",
|
||||
);
|
||||
|
||||
cy.get(
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-grade"]'
|
||||
).should("contain", "Note: 3")
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-grade"]',
|
||||
).should("contain", "Note: 3");
|
||||
cy.get(
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-grade-percent"]'
|
||||
).should("contain", "Ungerundete Note: 3.08")
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-grade-percent"]',
|
||||
).should("contain", "Ungerundete Note: 3.08");
|
||||
|
||||
cy.get(
|
||||
'[data-cy="assignment-test-lehrgang-assignment-edoniq-wissens-und-verständisfragen-circle-fahrzeug-demo"]'
|
||||
'[data-cy="assignment-test-lehrgang-assignment-edoniq-wissens-und-verständisfragen-circle-fahrzeug-demo"]',
|
||||
)
|
||||
.should("contain", "10")
|
||||
.and("contain", "Bewertung freigegeben")
|
||||
.and("contain", "42%")
|
||||
.and("contain", "Nicht bestanden")
|
||||
.and("contain", "Nicht bestanden");
|
||||
|
||||
// it can open learning content page directly
|
||||
cy.get(
|
||||
'[data-cy="assignment-test-lehrgang-assignment-edoniq-wissens-und-verständisfragen-circle-fahrzeug-demo"] [data-cy="open-learning-content"]'
|
||||
).click()
|
||||
'[data-cy="assignment-test-lehrgang-assignment-edoniq-wissens-und-verständisfragen-circle-fahrzeug-demo"] [data-cy="open-learning-content"]',
|
||||
).click();
|
||||
cy.get('[data-cy="test-result"]')
|
||||
.should("contain", "10 von 24 Punkten")
|
||||
.and("contain", "42%")
|
||||
.and("contain", "Nicht bestanden")
|
||||
})
|
||||
.and("contain", "Nicht bestanden");
|
||||
});
|
||||
|
||||
it("check with finished edoniq test and finished casework", () => {
|
||||
cy.manageCommand(
|
||||
"cypress_reset --create-assignment-evaluation --create-edoniq-test-results 19 24 0"
|
||||
)
|
||||
login("test-student1@example.com", "test")
|
||||
cy.visit("/course/test-lehrgang/competence")
|
||||
"cypress_reset --create-assignment-evaluation --create-edoniq-test-results 19 24 0",
|
||||
);
|
||||
login("test-student1@example.com", "test");
|
||||
cy.visit("/course/test-lehrgang/competence");
|
||||
|
||||
cy.get('[data-cy="certificate-total-points-text"]').contains(
|
||||
"Erfahrungsnote üK: 5.5"
|
||||
)
|
||||
"Erfahrungsnote üK: 5.5",
|
||||
);
|
||||
|
||||
cy.get(
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1"]'
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1"]',
|
||||
)
|
||||
.should("contain", "Note: 5.5")
|
||||
.and("contain", "2 von 2 Kompetenznachweis-Elementen")
|
||||
.and("contain", "2 von 2 Kompetenznachweis-Elementen");
|
||||
|
||||
// check on certificates page
|
||||
cy.get('[data-cy="certificates-show-all-button"]').click()
|
||||
cy.get('[data-cy="certificates-show-all-button"]').click();
|
||||
cy.get('[data-cy="certificate-total-points-text"]')
|
||||
.should("contain", "Erfahrungsnote üK")
|
||||
.and("contain", "Note: 5.5")
|
||||
.and("not.contain", "Zwischenstand")
|
||||
.and("not.contain", "Zwischenstand");
|
||||
|
||||
cy.get(
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1"]'
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1"]',
|
||||
)
|
||||
.and("not.contain", "Zwischenstand")
|
||||
.and("contain", "2 von 2 Kompetenznachweis-Elementen")
|
||||
.and("contain", "2 von 2 Kompetenznachweis-Elementen");
|
||||
cy.get(
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-grade"]'
|
||||
).should("contain", "Note: 5.5")
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-grade"]',
|
||||
).should("contain", "Note: 5.5");
|
||||
cy.get(
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-grade-percent"]'
|
||||
).should("contain", "Ungerundete Note: 5.48")
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-grade-percent"]',
|
||||
).should("contain", "Ungerundete Note: 5.48");
|
||||
|
||||
// check certificate detail page
|
||||
cy.get(
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-detail-link"]'
|
||||
).click()
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-detail-link"]',
|
||||
).click();
|
||||
|
||||
cy.get(
|
||||
'[data-cy="assignment-test-lehrgang-assignment-überprüfen-einer-motorfahrzeugs-versicherungspolice"]'
|
||||
'[data-cy="assignment-test-lehrgang-assignment-überprüfen-einer-motorfahrzeugs-versicherungspolice"]',
|
||||
)
|
||||
.should("contain", "24")
|
||||
.and("contain", "von 24 Punkten")
|
||||
.and("contain", "Bewertung freigegeben")
|
||||
.and("contain", "Bewertung freigegeben");
|
||||
cy.get(
|
||||
'[data-cy="assignment-test-lehrgang-assignment-edoniq-wissens-und-verständisfragen-circle-fahrzeug-demo"]'
|
||||
'[data-cy="assignment-test-lehrgang-assignment-edoniq-wissens-und-verständisfragen-circle-fahrzeug-demo"]',
|
||||
)
|
||||
.should("contain", "19")
|
||||
.and("contain", "von 24 Punkten")
|
||||
.and("contain", "Bewertung freigegeben")
|
||||
})
|
||||
.and("contain", "Bewertung freigegeben");
|
||||
});
|
||||
|
||||
it("check with finished edoniq test and finished casework in different course sessions", () => {
|
||||
const TEST_TRAINER2_USER_ID = "299941ae-1e4b-4f45-8180-876c3ad340b4"
|
||||
const TEST_STUDENT2_USER_ID = "19c40d94-15cc-4198-aaad-ef707c4b0900"
|
||||
const TEST_COURSE_SESSION_ZURICH_ID = -2
|
||||
const TEST_TRAINER2_USER_ID = "299941ae-1e4b-4f45-8180-876c3ad340b4";
|
||||
const TEST_STUDENT2_USER_ID = "19c40d94-15cc-4198-aaad-ef707c4b0900";
|
||||
const TEST_COURSE_SESSION_ZURICH_ID = -2;
|
||||
cy.manageCommand(
|
||||
`cypress_reset --create-assignment-evaluation --assignment-evaluation-user-id ${TEST_TRAINER2_USER_ID} --assignment-completion-user-id ${TEST_STUDENT2_USER_ID} --edoniq-user-id ${TEST_STUDENT2_USER_ID} --edoniq-course-session-id '${TEST_COURSE_SESSION_ZURICH_ID}' --create-edoniq-test-results 19 24 0`
|
||||
)
|
||||
login("test-student2@example.com", "test")
|
||||
cy.visit("/course/test-lehrgang/competence")
|
||||
`cypress_reset --create-assignment-evaluation --assignment-evaluation-user-id ${TEST_TRAINER2_USER_ID} --assignment-completion-user-id ${TEST_STUDENT2_USER_ID} --edoniq-user-id ${TEST_STUDENT2_USER_ID} --edoniq-course-session-id '${TEST_COURSE_SESSION_ZURICH_ID}' --create-edoniq-test-results 19 24 0`,
|
||||
);
|
||||
login("test-student2@example.com", "test");
|
||||
cy.visit("/course/test-lehrgang/competence");
|
||||
|
||||
cy.get('[data-cy="certificate-total-points-text"]').contains(
|
||||
"Erfahrungsnote üK: 5.5"
|
||||
)
|
||||
"Erfahrungsnote üK: 5.5",
|
||||
);
|
||||
|
||||
cy.get(
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1"]'
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1"]',
|
||||
)
|
||||
.should("contain", "Note: 5.5")
|
||||
.and("contain", "2 von 2 Kompetenznachweis-Elementen")
|
||||
.and("contain", "2 von 2 Kompetenznachweis-Elementen");
|
||||
|
||||
// check on certificates page
|
||||
cy.get('[data-cy="certificates-show-all-button"]').click()
|
||||
cy.get('[data-cy="certificates-show-all-button"]').click();
|
||||
cy.get('[data-cy="certificate-total-points-text"]')
|
||||
.should("contain", "Erfahrungsnote üK")
|
||||
.and("contain", "Note: 5.5")
|
||||
.and("not.contain", "Zwischenstand")
|
||||
.and("not.contain", "Zwischenstand");
|
||||
|
||||
cy.get(
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1"]'
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1"]',
|
||||
)
|
||||
.and("not.contain", "Zwischenstand")
|
||||
.and("contain", "2 von 2 Kompetenznachweis-Elementen")
|
||||
.and("contain", "2 von 2 Kompetenznachweis-Elementen");
|
||||
cy.get(
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-grade"]'
|
||||
).should("contain", "Note: 5.5")
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-grade"]',
|
||||
).should("contain", "Note: 5.5");
|
||||
cy.get(
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-grade-percent"]'
|
||||
).should("contain", "Ungerundete Note: 5.48")
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-grade-percent"]',
|
||||
).should("contain", "Ungerundete Note: 5.48");
|
||||
|
||||
// check certificate detail page
|
||||
cy.get(
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-detail-link"]'
|
||||
).click()
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-detail-link"]',
|
||||
).click();
|
||||
|
||||
cy.get(
|
||||
'[data-cy="assignment-test-lehrgang-assignment-überprüfen-einer-motorfahrzeugs-versicherungspolice"]'
|
||||
'[data-cy="assignment-test-lehrgang-assignment-überprüfen-einer-motorfahrzeugs-versicherungspolice"]',
|
||||
)
|
||||
.should("contain", "24")
|
||||
.and("contain", "von 24 Punkten")
|
||||
.and("contain", "Bewertung freigegeben")
|
||||
.and("contain", "Bewertung freigegeben");
|
||||
cy.get(
|
||||
'[data-cy="assignment-test-lehrgang-assignment-edoniq-wissens-und-verständisfragen-circle-fahrzeug-demo"]'
|
||||
'[data-cy="assignment-test-lehrgang-assignment-edoniq-wissens-und-verständisfragen-circle-fahrzeug-demo"]',
|
||||
)
|
||||
.should("contain", "19")
|
||||
.and("contain", "von 24 Punkten")
|
||||
.and("contain", "Bewertung freigegeben")
|
||||
|
||||
cy.get('[data-cy="assignment-test-lehrgang-assignment-überprüfen-einer-motorfahrzeugs-versicherungspolice-course-session"]').should("contain", "Test Bern 2022 a")
|
||||
cy.get('[data-cy="assignment-test-lehrgang-assignment-edoniq-wissens-und-verständisfragen-circle-fahrzeug-demo-course-session"]').should("contain", "Test Zürich 2022 a")
|
||||
})
|
||||
|
||||
it("check show assignment in different course session", () => {
|
||||
const TEST_TRAINER2_USER_ID = "299941ae-1e4b-4f45-8180-876c3ad340b4"
|
||||
const TEST_STUDENT2_USER_ID = "19c40d94-15cc-4198-aaad-ef707c4b0900"
|
||||
const TEST_COURSE_SESSION_ZURICH_ID = -2
|
||||
cy.manageCommand(
|
||||
`cypress_reset --create-assignment-evaluation --assignment-evaluation-user-id ${TEST_TRAINER2_USER_ID} --assignment-completion-user-id ${TEST_STUDENT2_USER_ID} --edoniq-user-id ${TEST_STUDENT2_USER_ID} --edoniq-course-session-id '${TEST_COURSE_SESSION_ZURICH_ID}' --create-edoniq-test-results 19 24 0`
|
||||
)
|
||||
login("test-student2@example.com", "test")
|
||||
cy.visit("course/test-lehrgang/competence/certificates/kompetenznachweis-1")
|
||||
|
||||
cy.get('[data-cy="current-course-session-title"]').should("contain", "Test Bern 2022 a")
|
||||
.and("contain", "Bewertung freigegeben");
|
||||
|
||||
cy.get(
|
||||
'[data-cy="assignment-test-lehrgang-assignment-edoniq-wissens-und-verständisfragen-circle-fahrzeug-demo"] [data-cy="open-learning-content"]'
|
||||
).click()
|
||||
'[data-cy="assignment-test-lehrgang-assignment-überprüfen-einer-motorfahrzeugs-versicherungspolice-course-session"]',
|
||||
).should("contain", "Test Bern 2022 a");
|
||||
cy.get(
|
||||
'[data-cy="assignment-test-lehrgang-assignment-edoniq-wissens-und-verständisfragen-circle-fahrzeug-demo-course-session"]',
|
||||
).should("contain", "Test Zürich 2022 a");
|
||||
});
|
||||
|
||||
cy.get('[data-cy="current-course-session-title"]').should("contain", "Test Zürich 2022 a")
|
||||
})
|
||||
it("check show assignment in different course session", () => {
|
||||
const TEST_TRAINER2_USER_ID = "299941ae-1e4b-4f45-8180-876c3ad340b4";
|
||||
const TEST_STUDENT2_USER_ID = "19c40d94-15cc-4198-aaad-ef707c4b0900";
|
||||
const TEST_COURSE_SESSION_ZURICH_ID = -2;
|
||||
cy.manageCommand(
|
||||
`cypress_reset --create-assignment-evaluation --assignment-evaluation-user-id ${TEST_TRAINER2_USER_ID} --assignment-completion-user-id ${TEST_STUDENT2_USER_ID} --edoniq-user-id ${TEST_STUDENT2_USER_ID} --edoniq-course-session-id '${TEST_COURSE_SESSION_ZURICH_ID}' --create-edoniq-test-results 19 24 0`,
|
||||
);
|
||||
login("test-student2@example.com", "test");
|
||||
cy.visit(
|
||||
"course/test-lehrgang/competence/certificates/kompetenznachweis-1",
|
||||
);
|
||||
|
||||
cy.get('[data-cy="current-course-session-title"]').should(
|
||||
"contain",
|
||||
"Test Bern 2022 a",
|
||||
);
|
||||
|
||||
cy.get(
|
||||
'[data-cy="assignment-test-lehrgang-assignment-edoniq-wissens-und-verständisfragen-circle-fahrzeug-demo"] [data-cy="open-learning-content"]',
|
||||
).click();
|
||||
|
||||
cy.get('[data-cy="current-course-session-title"]').should(
|
||||
"contain",
|
||||
"Test Zürich 2022 a",
|
||||
);
|
||||
});
|
||||
|
||||
it("check with finished edoniq test with deducted points", () => {
|
||||
cy.manageCommand(
|
||||
"cypress_reset --create-assignment-completion --create-edoniq-test-results 19 24 8"
|
||||
)
|
||||
login("test-student1@example.com", "test")
|
||||
"cypress_reset --create-assignment-completion --create-edoniq-test-results 19 24 8",
|
||||
);
|
||||
login("test-student1@example.com", "test");
|
||||
|
||||
// go to certificate detail page
|
||||
cy.visit(
|
||||
"/course/test-lehrgang/competence/certificates/kompetenznachweis-1"
|
||||
)
|
||||
"/course/test-lehrgang/competence/certificates/kompetenznachweis-1",
|
||||
);
|
||||
|
||||
cy.get(
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-grade"]'
|
||||
).should("contain", "Note: 3.5")
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-grade"]',
|
||||
).should("contain", "Note: 3.5");
|
||||
cy.get(
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-grade-percent"]'
|
||||
).should("contain", "Ungerundete Note: 3.29")
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-grade-percent"]',
|
||||
).should("contain", "Ungerundete Note: 3.29");
|
||||
|
||||
cy.get(
|
||||
'[data-cy="assignment-test-lehrgang-assignment-edoniq-wissens-und-verständisfragen-circle-fahrzeug-demo"]'
|
||||
'[data-cy="assignment-test-lehrgang-assignment-edoniq-wissens-und-verständisfragen-circle-fahrzeug-demo"]',
|
||||
)
|
||||
.should("contain", "11")
|
||||
.and("contain", "Bewertung freigegeben")
|
||||
.and("contain", "46%")
|
||||
.and("contain", "mit Abzug")
|
||||
.and("contain", "Nicht bestanden")
|
||||
.and("contain", "Nicht bestanden");
|
||||
|
||||
// it can open learning content page directly
|
||||
cy.get(
|
||||
'[data-cy="assignment-test-lehrgang-assignment-edoniq-wissens-und-verständisfragen-circle-fahrzeug-demo"] [data-cy="open-learning-content"]'
|
||||
).click()
|
||||
'[data-cy="assignment-test-lehrgang-assignment-edoniq-wissens-und-verständisfragen-circle-fahrzeug-demo"] [data-cy="open-learning-content"]',
|
||||
).click();
|
||||
cy.get('[data-cy="test-result"]')
|
||||
.should("contain", "11 von 24 Punkten")
|
||||
.and("contain", "46%")
|
||||
.and("contain", "Punkte aus Bewertung: 19")
|
||||
.and("contain", "Abgezogene Punkte: 8")
|
||||
.and("contain", "Grund: Edoniq Punkteabzug Test")
|
||||
.and("contain", "Nicht bestanden")
|
||||
})
|
||||
.and("contain", "Nicht bestanden");
|
||||
});
|
||||
|
||||
it("check with finished casework and points deducted", () => {
|
||||
cy.manageCommand(
|
||||
"cypress_reset --create-assignment-evaluation --assignment-evaluation-scores 4,6,4,3,2 --assignment-points-deducted 5"
|
||||
)
|
||||
login("test-student1@example.com", "test")
|
||||
cy.visit("/course/test-lehrgang/competence")
|
||||
"cypress_reset --create-assignment-evaluation --assignment-evaluation-scores 4,6,4,3,2 --assignment-points-deducted 5",
|
||||
);
|
||||
login("test-student1@example.com", "test");
|
||||
cy.visit("/course/test-lehrgang/competence");
|
||||
|
||||
cy.get('[data-cy="certificate-total-points-text"]').contains(
|
||||
"Erfahrungsnote üK: 4"
|
||||
)
|
||||
"Erfahrungsnote üK: 4",
|
||||
);
|
||||
|
||||
cy.get(
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1"]'
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1"]',
|
||||
)
|
||||
.should("contain", "Note: 4")
|
||||
.and("contain", "1 von 2 Kompetenznachweis-Elementen")
|
||||
.and("contain", "1 von 2 Kompetenznachweis-Elementen");
|
||||
|
||||
// check on certificates page
|
||||
cy.get('[data-cy="certificates-show-all-button"]').click()
|
||||
cy.get('[data-cy="certificates-show-all-button"]').click();
|
||||
cy.get('[data-cy="certificate-total-points-text"]')
|
||||
.should("contain", "Erfahrungsnote üK")
|
||||
.and("contain", "Note: 4")
|
||||
.and("contain", "Zwischenstand")
|
||||
.and("contain", "Zwischenstand");
|
||||
|
||||
cy.get(
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1"]'
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1"]',
|
||||
)
|
||||
.and("contain", "Zwischenstand")
|
||||
.and("contain", "1 von 2 Kompetenznachweis-Elementen")
|
||||
.and("contain", "1 von 2 Kompetenznachweis-Elementen");
|
||||
cy.get(
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-grade"]'
|
||||
).should("contain", "Note: 4")
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-grade"]',
|
||||
).should("contain", "Note: 4");
|
||||
cy.get(
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-grade-percent"]'
|
||||
).should("contain", "Ungerundete Note: 3.92")
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-grade-percent"]',
|
||||
).should("contain", "Ungerundete Note: 3.92");
|
||||
|
||||
// check certificate detail page
|
||||
cy.get(
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-detail-link"]'
|
||||
).click()
|
||||
'[data-cy="certificate-test-lehrgang-competencenavi-certificates-kompetenznachweis-1-detail-link"]',
|
||||
).click();
|
||||
|
||||
cy.get(
|
||||
'[data-cy="assignment-test-lehrgang-assignment-überprüfen-einer-motorfahrzeugs-versicherungspolice"]'
|
||||
'[data-cy="assignment-test-lehrgang-assignment-überprüfen-einer-motorfahrzeugs-versicherungspolice"]',
|
||||
)
|
||||
.should("contain", "14")
|
||||
.and("contain", "von 24 Punkten")
|
||||
.and("contain", "58%")
|
||||
.and("contain", "mit Abzug")
|
||||
.and("contain", "Bewertung freigegeben")
|
||||
.and("contain", "Bewertung freigegeben");
|
||||
|
||||
cy.get(
|
||||
'[data-cy="assignment-test-lehrgang-assignment-überprüfen-einer-motorfahrzeugs-versicherungspolice"] [data-cy="open-learning-content"]'
|
||||
).click()
|
||||
cy.get('[data-cy="user-points"]').should("contain", "14")
|
||||
'[data-cy="assignment-test-lehrgang-assignment-überprüfen-einer-motorfahrzeugs-versicherungspolice"] [data-cy="open-learning-content"]',
|
||||
).click();
|
||||
cy.get('[data-cy="user-points"]').should("contain", "14");
|
||||
cy.get('[data-cy="total-points"]').should(
|
||||
"contain",
|
||||
"von 24 Punkten (58%)"
|
||||
)
|
||||
"von 24 Punkten (58%)",
|
||||
);
|
||||
cy.get('[data-cy="points-deducted"]')
|
||||
.should("contain", "Punkte aus Bewertung: 19")
|
||||
.and("contain", "Abgezogene Punkte: 5")
|
||||
.and("contain", "Grund: Assignment Punkteabzug Test")
|
||||
})
|
||||
.and("contain", "Grund: Assignment Punkteabzug Test");
|
||||
});
|
||||
|
||||
it("should display link to details", () => {
|
||||
cy.manageCommand("cypress_reset")
|
||||
login("test-student1@example.com", "test")
|
||||
cy.visit("/course/test-lehrgang/competence/self-evaluation-and-feedback")
|
||||
cy.manageCommand("cypress_reset");
|
||||
login("test-student1@example.com", "test");
|
||||
cy.visit("/course/test-lehrgang/competence/self-evaluation-and-feedback");
|
||||
cy.get('[data-cy^="self-eval-"][data-cy$="-detail-url"]:first').contains(
|
||||
"Selbsteinschätzung anschauen"
|
||||
)
|
||||
})
|
||||
})
|
||||
"Selbsteinschätzung anschauen",
|
||||
);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -123,11 +123,11 @@ describe("dashboardSupervisor.cy.js", () => {
|
|||
'[data-cy="dashboard.stats.assignments"] [data-cy="basebox.detailsLink"]'
|
||||
).click();
|
||||
cy.get(
|
||||
'[data-cy="Edoniq Wissens- und Verständisfragen - Circle Fahrzeug (Demo)"]'
|
||||
'[data-cy="Edoniq Wissens- und Verständisfragen - Circle Fahrzeug (Demo)@-1"]'
|
||||
).should("contain", "0 von 3 bestanden");
|
||||
|
||||
cy.get(
|
||||
'[data-cy="Überprüfen einer Motorfahrzeugs-Versicherungspolice"]'
|
||||
'[data-cy="Überprüfen einer Motorfahrzeugs-Versicherungspolice@-1"]'
|
||||
).should("contain", "0 von 3 bestanden");
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -14,29 +14,29 @@ describe("dueDates.cy.js", () => {
|
|||
});
|
||||
|
||||
it("can filter due dates by dropbox selects", () => {
|
||||
cy.get('[data-cy="due-date-list"]').children().should("have.length", 7);
|
||||
cy.get('[data-cy="due-date-list"]').children().should("have.length", 10);
|
||||
|
||||
// can filter by session
|
||||
selectDropboxItem('[data-cy="select-session"]', "Zürich");
|
||||
cy.get('[data-cy="due-date-list"]').children().should("have.length", 1);
|
||||
cy.get('[data-cy="due-date-list"]').children().should("have.length", 4);
|
||||
selectDropboxItem('[data-cy="select-session"]', "Bern");
|
||||
cy.get('[data-cy="due-date-list"]').children().should("have.length", 6);
|
||||
selectDropboxItem('[data-cy="select-session"]', "Alle");
|
||||
cy.get('[data-cy="due-date-list"]').children().should("have.length", 7);
|
||||
cy.get('[data-cy="due-date-list"]').children().should("have.length", 10);
|
||||
|
||||
// can filter by circle
|
||||
selectDropboxItem('[data-cy="select-circle"]', "Fahrzeug");
|
||||
cy.get('[data-cy="due-date-list"]').children().should("have.length", 6);
|
||||
cy.get('[data-cy="due-date-list"]').children().should("have.length", 9);
|
||||
selectDropboxItem('[data-cy="select-circle"]', "Reisen");
|
||||
cy.get('[data-cy="due-date-list"]').children().should("have.length", 1);
|
||||
selectDropboxItem('[data-cy="select-circle"]', "Alle");
|
||||
cy.get('[data-cy="due-date-list"]').children().should("have.length", 7);
|
||||
cy.get('[data-cy="due-date-list"]').children().should("have.length", 10);
|
||||
|
||||
// can filter by types
|
||||
selectDropboxItem('[data-cy="select-type"]', "Präsenzkurs");
|
||||
cy.get('[data-cy="due-date-list"]').children().should("have.length", 3);
|
||||
selectDropboxItem('[data-cy="select-type"]', "Bewertung");
|
||||
cy.get('[data-cy="due-date-list"]').children().should("have.length", 1);
|
||||
cy.get('[data-cy="due-date-list"]').children().should("have.length", 2);
|
||||
|
||||
// combination
|
||||
selectDropboxItem('[data-cy="select-session"]', "Bern");
|
||||
|
|
@ -44,7 +44,7 @@ describe("dueDates.cy.js", () => {
|
|||
cy.get('[data-cy="due-date-list"]').children().should("have.length", 2);
|
||||
selectDropboxItem('[data-cy="select-session"]', "Zürich");
|
||||
cy.get('[data-cy="due-date-list"]').children().should("have.length", 1);
|
||||
selectDropboxItem('[data-cy="select-type"]', "Bewertung");
|
||||
selectDropboxItem('[data-cy="select-type"]', "Abgabetermin Vorbereitungsauftrag");
|
||||
cy.get('[data-cy="due-date-list"]').should("contain", "Keine Termine");
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
from dataclasses import dataclass
|
||||
from datetime import datetime
|
||||
from io import BytesIO
|
||||
|
||||
import structlog
|
||||
from django.utils import timezone
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from openpyxl import Workbook
|
||||
|
||||
|
|
@ -34,7 +36,8 @@ COMPETENCE_ELEMENT_EXPORT_FILE_NAME = _("export_kompetenznachweis_elemente")
|
|||
@dataclass
|
||||
class CompetenceCertificateElement:
|
||||
assignment: Assignment
|
||||
date: DueDate
|
||||
# date: DueDate
|
||||
sort_datetime: datetime
|
||||
learning_content: LearningContent
|
||||
course_session: CourseSession
|
||||
|
||||
|
|
@ -227,7 +230,7 @@ def _get_competence_certificate_elements(
|
|||
cse = [
|
||||
CompetenceCertificateElement(
|
||||
assignment=csa.learning_content.content_assignment,
|
||||
date=csa.submission_deadline,
|
||||
sort_datetime=csa.submission_deadline.start or timezone.now(),
|
||||
learning_content=csa.learning_content,
|
||||
course_session=csa.course_session,
|
||||
)
|
||||
|
|
@ -237,7 +240,7 @@ def _get_competence_certificate_elements(
|
|||
cse += [
|
||||
CompetenceCertificateElement(
|
||||
assignment=cset.learning_content.content_assignment,
|
||||
date=cset.deadline,
|
||||
sort_datetime=cset.deadline.start or timezone.now(),
|
||||
learning_content=cset.learning_content,
|
||||
course_session=cset.course_session,
|
||||
)
|
||||
|
|
@ -245,6 +248,6 @@ def _get_competence_certificate_elements(
|
|||
]
|
||||
|
||||
# order by course_session and submission_deadline
|
||||
cse.sort(key=lambda x: (x.course_session.title, x.date.start))
|
||||
cse.sort(key=lambda x: (x.course_session.title, x.sort_datetime))
|
||||
|
||||
return cse
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ TEST_STUDENT1_USER_ID = "65c73ad0-6d53-43a9-a4a4-64143f27b03a"
|
|||
TEST_STUDENT2_USER_ID = "19c40d94-15cc-4198-aaad-ef707c4b0900"
|
||||
TEST_STUDENT3_USER_ID = "bcf94dba-53bc-474b-a22d-e4af39aa042b"
|
||||
TEST_MENTOR1_USER_ID = "d1f5f5a9-5b0a-4e1a-9e1a-9e9b5b5e1b1b"
|
||||
TEST_BERUFSBILDNER1_USER_ID = "bb83dde0-27e7-4859-8acb-a323025d712c"
|
||||
TEST_STUDENT1_VV_USER_ID = "5ff59857-8de5-415e-a387-4449f9a0337a"
|
||||
TEST_STUDENT2_VV_AND_VV_MENTOR_USER_ID = "7e8ebf0b-e6e2-4022-88f4-6e663ba0a9db"
|
||||
TEST_USER_EMPTY_ID = "daecbabe-4ab9-4edf-a71f-4119042ccb02"
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ env.read_env()
|
|||
|
||||
from vbv_lernwelt.core.constants import (
|
||||
ADMIN_USER_ID,
|
||||
TEST_BERUFSBILDNER1_USER_ID,
|
||||
TEST_MENTOR1_USER_ID,
|
||||
TEST_STUDENT1_USER_ID,
|
||||
TEST_STUDENT1_VV_USER_ID,
|
||||
|
|
@ -410,6 +411,15 @@ def create_default_users(default_password="test", set_avatar=False):
|
|||
language="de",
|
||||
avatar_image="uk1.patrizia.huggel.jpg",
|
||||
)
|
||||
_create_user(
|
||||
_id=TEST_BERUFSBILDNER1_USER_ID,
|
||||
email="test-berufsbildner1@example.com",
|
||||
first_name="Ursina",
|
||||
last_name="Meier-Bildner",
|
||||
password=default_password,
|
||||
language="de",
|
||||
avatar_image="uk1.patrizia.huggel.jpg",
|
||||
)
|
||||
_create_student_user(
|
||||
id=TEST_STUDENT2_VV_AND_VV_MENTOR_USER_ID,
|
||||
email="test-student-and-mentor2@example.com",
|
||||
|
|
|
|||
|
|
@ -189,7 +189,7 @@ def command(
|
|||
SelfEvaluationFeedback.objects.all().delete()
|
||||
CourseCompletionFeedback.objects.all().delete()
|
||||
|
||||
AgentParticipantRelation.objects.all().delete()
|
||||
AgentParticipantRelation.objects.filter(role="LEARNING_MENTOR").delete()
|
||||
# LearningMentor.objects.all().delete()
|
||||
MentorInvitation.objects.all().delete()
|
||||
User.objects.all().update(organisation=Organisation.objects.first())
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ from vbv_lernwelt.competence.factories import (
|
|||
)
|
||||
from vbv_lernwelt.competence.models import ActionCompetence
|
||||
from vbv_lernwelt.core.constants import (
|
||||
TEST_BERUFSBILDNER1_USER_ID,
|
||||
TEST_COURSE_SESSION_BERN_ID,
|
||||
TEST_COURSE_SESSION_ZURICH_ID,
|
||||
TEST_STUDENT1_USER_ID,
|
||||
|
|
@ -62,6 +63,7 @@ from vbv_lernwelt.course_session.models import (
|
|||
)
|
||||
from vbv_lernwelt.course_session_group.models import CourseSessionGroup
|
||||
from vbv_lernwelt.feedback.services import update_feedback_response
|
||||
from vbv_lernwelt.learning_mentor.models import AgentParticipantRelation
|
||||
from vbv_lernwelt.learnpath.models import (
|
||||
Circle,
|
||||
LearningContentAssignment,
|
||||
|
|
@ -158,6 +160,14 @@ def create_test_course(
|
|||
id=TEST_COURSE_SESSION_BERN_ID,
|
||||
start_date=now,
|
||||
)
|
||||
cs_zurich = CourseSession.objects.create(
|
||||
course_id=COURSE_TEST_ID,
|
||||
title="Test Zürich 2022 a",
|
||||
import_id="Test Zürich 2022 a",
|
||||
id=TEST_COURSE_SESSION_ZURICH_ID,
|
||||
start_date=now,
|
||||
)
|
||||
|
||||
csac = CourseSessionAttendanceCourse.objects.create(
|
||||
course_session=cs_bern,
|
||||
learning_content=LearningContentAttendanceCourse.objects.get(
|
||||
|
|
@ -201,25 +211,26 @@ def create_test_course(
|
|||
)
|
||||
csac.due_date.save()
|
||||
|
||||
csa = CourseSessionAssignment.objects.create(
|
||||
course_session=cs_bern,
|
||||
learning_content=LearningContentAssignment.objects.get(
|
||||
slug=f"{course.slug}-lp-circle-fahrzeug-lc-überprüfen-einer-motorfahrzeug-versicherungspolice"
|
||||
),
|
||||
)
|
||||
next_thursday = datetime.now() + relativedelta(weekday=TH(2))
|
||||
csa.submission_deadline.start = timezone.make_aware(
|
||||
(next_thursday + relativedelta(weeks=3)).replace(
|
||||
hour=23, minute=59, second=59, microsecond=0
|
||||
for course_session in [cs_bern, cs_zurich]:
|
||||
csa = CourseSessionAssignment.objects.create(
|
||||
course_session=course_session,
|
||||
learning_content=LearningContentAssignment.objects.get(
|
||||
slug=f"{course.slug}-lp-circle-fahrzeug-lc-überprüfen-einer-motorfahrzeug-versicherungspolice"
|
||||
),
|
||||
)
|
||||
)
|
||||
csa.submission_deadline.save()
|
||||
csa.evaluation_deadline.start = timezone.make_aware(
|
||||
(next_thursday + relativedelta(weeks=5)).replace(
|
||||
hour=23, minute=59, second=59, microsecond=0
|
||||
next_thursday = datetime.now() + relativedelta(weekday=TH(2))
|
||||
csa.submission_deadline.start = timezone.make_aware(
|
||||
(next_thursday + relativedelta(weeks=3)).replace(
|
||||
hour=23, minute=59, second=59, microsecond=0
|
||||
)
|
||||
)
|
||||
)
|
||||
csa.evaluation_deadline.save()
|
||||
csa.submission_deadline.save()
|
||||
csa.evaluation_deadline.start = timezone.make_aware(
|
||||
(next_thursday + relativedelta(weeks=5)).replace(
|
||||
hour=23, minute=59, second=59, microsecond=0
|
||||
)
|
||||
)
|
||||
csa.evaluation_deadline.save()
|
||||
|
||||
csa = CourseSessionAssignment.objects.create(
|
||||
course_session=cs_bern,
|
||||
|
|
@ -235,18 +246,19 @@ def create_test_course(
|
|||
)
|
||||
csa.submission_deadline.save()
|
||||
|
||||
cset = CourseSessionEdoniqTest.objects.create(
|
||||
course_session=cs_bern,
|
||||
learning_content=LearningContentEdoniqTest.objects.get(
|
||||
slug="test-lehrgang-lp-circle-fahrzeug-lc-wissens-und-verständnisfragen"
|
||||
),
|
||||
)
|
||||
cset.deadline.start = timezone.make_aware(
|
||||
(next_monday + relativedelta(days=3)).replace(
|
||||
hour=21, minute=0, second=0, microsecond=0
|
||||
for course_session in [cs_bern, cs_zurich]:
|
||||
cset = CourseSessionEdoniqTest.objects.create(
|
||||
course_session=course_session,
|
||||
learning_content=LearningContentEdoniqTest.objects.get(
|
||||
slug="test-lehrgang-lp-circle-fahrzeug-lc-wissens-und-verständnisfragen"
|
||||
),
|
||||
)
|
||||
)
|
||||
cset.deadline.save()
|
||||
cset.deadline.start = timezone.make_aware(
|
||||
(next_monday + relativedelta(days=3)).replace(
|
||||
hour=21, minute=0, second=0, microsecond=0
|
||||
)
|
||||
)
|
||||
cset.deadline.save()
|
||||
|
||||
if include_vv:
|
||||
_csa = CourseSessionAssignment.objects.create(
|
||||
|
|
@ -256,13 +268,6 @@ def create_test_course(
|
|||
),
|
||||
)
|
||||
|
||||
cs_zurich = CourseSession.objects.create(
|
||||
course_id=COURSE_TEST_ID,
|
||||
title="Test Zürich 2022 a",
|
||||
import_id="Test Zürich 2022 a",
|
||||
id=TEST_COURSE_SESSION_ZURICH_ID,
|
||||
start_date=now,
|
||||
)
|
||||
csac = CourseSessionAttendanceCourse.objects.create(
|
||||
course_session=cs_zurich,
|
||||
learning_content=LearningContentAttendanceCourse.objects.get(
|
||||
|
|
@ -322,6 +327,40 @@ def create_test_course(
|
|||
user=User.objects.get(id=TEST_STUDENT3_USER_ID),
|
||||
)
|
||||
|
||||
# add berufsbildner
|
||||
AgentParticipantRelation.objects.create(
|
||||
agent=User.objects.get(id=TEST_BERUFSBILDNER1_USER_ID),
|
||||
participant=CourseSessionUser.objects.get(
|
||||
user__id=TEST_STUDENT1_USER_ID,
|
||||
course_session=cs_bern,
|
||||
),
|
||||
role="BERUFSBILDNER",
|
||||
)
|
||||
AgentParticipantRelation.objects.create(
|
||||
agent=User.objects.get(id=TEST_BERUFSBILDNER1_USER_ID),
|
||||
participant=CourseSessionUser.objects.get(
|
||||
user__id=TEST_STUDENT2_USER_ID,
|
||||
course_session=cs_bern,
|
||||
),
|
||||
role="BERUFSBILDNER",
|
||||
)
|
||||
AgentParticipantRelation.objects.create(
|
||||
agent=User.objects.get(id=TEST_BERUFSBILDNER1_USER_ID),
|
||||
participant=CourseSessionUser.objects.get(
|
||||
user__id=TEST_STUDENT2_USER_ID,
|
||||
course_session=cs_zurich,
|
||||
),
|
||||
role="BERUFSBILDNER",
|
||||
)
|
||||
AgentParticipantRelation.objects.create(
|
||||
agent=User.objects.get(id=TEST_BERUFSBILDNER1_USER_ID),
|
||||
participant=CourseSessionUser.objects.get(
|
||||
user__id=TEST_STUDENT3_USER_ID,
|
||||
course_session=cs_bern,
|
||||
),
|
||||
role="BERUFSBILDNER",
|
||||
)
|
||||
|
||||
return course
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -92,8 +92,8 @@ def create_assignment_summary(
|
|||
total_failed = sum([m.failed_count for m in completed_metrics])
|
||||
|
||||
total_average_evaluation_percent = (
|
||||
sum([m.average_evaluation_percent for m in completed_metrics]) / completed_count
|
||||
)
|
||||
sum([m.average_evaluation_percent for m in completed_metrics]) or 0
|
||||
) / (completed_count or 1)
|
||||
|
||||
return AssignmentStatisticsSummaryType(
|
||||
_id=urql_id, # noqa
|
||||
|
|
|
|||
|
|
@ -57,7 +57,8 @@ class CourseSessionUserTests(TestCase):
|
|||
|
||||
self.csu1_student1.delete()
|
||||
|
||||
self.assertEqual(mock_remove_roles_from_user.call_count, 1)
|
||||
# course_session_user and agent_participant_relation will call signal
|
||||
self.assertEqual(mock_remove_roles_from_user.call_count, 2)
|
||||
|
||||
mock_remove_roles_from_user.assert_called_with(
|
||||
self.student1, [(self.csu1_student1.course_session.course.slug, "MEMBER")]
|
||||
|
|
@ -67,7 +68,9 @@ class CourseSessionUserTests(TestCase):
|
|||
def test_dont_remove_roles_for_multiple_roles_in_cs(
|
||||
self, mock_remove_roles_from_user
|
||||
):
|
||||
AgentParticipantRelation.objects.filter(participant=self.csu1_student2).delete()
|
||||
mock_remove_roles_from_user.return_value = None
|
||||
mock_remove_roles_from_user.reset_mock()
|
||||
|
||||
self.csu1_student2.delete()
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue