Fix unittests
This commit is contained in:
parent
b98b4f8792
commit
0f134b8a76
|
|
@ -8,7 +8,7 @@ import {
|
||||||
exportPersons,
|
exportPersons,
|
||||||
} from "@/services/dashboard";
|
} from "@/services/dashboard";
|
||||||
import { useUserStore } from "@/stores/user";
|
import { useUserStore } from "@/stores/user";
|
||||||
import type { DashboardPersonsPageMode, XlsPersonExportRequestData } from "@/types";
|
import type { DashboardPersonsPageMode } from "@/types";
|
||||||
import { openDataAsXls } from "@/utils/export";
|
import { openDataAsXls } from "@/utils/export";
|
||||||
import { useRouteQuery } from "@vueuse/router";
|
import { useRouteQuery } from "@vueuse/router";
|
||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
|
|
@ -317,13 +317,13 @@ function personRoleDisplayValue(personCourseSession: DashboardPersonCourseSessio
|
||||||
}
|
}
|
||||||
|
|
||||||
async function exportData() {
|
async function exportData() {
|
||||||
const requestData: XlsPersonExportRequestData = filteredPersons.value.reduce(
|
const requestData = filteredPersons.value.reduce(
|
||||||
(acc, person) => {
|
(acc, person) => {
|
||||||
acc.courseSessionUserIds.push(person.csu_id);
|
acc.courseSessionUserIds.push(person.csu_id);
|
||||||
return acc;
|
return acc;
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
courseSessionUserIds: [],
|
courseSessionUserIds: [] as string[],
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
const data = await exportPersons(requestData, userStore.language);
|
const data = await exportPersons(requestData, userStore.language);
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ from vbv_lernwelt.competence.factories import (
|
||||||
)
|
)
|
||||||
from vbv_lernwelt.competence.models import ActionCompetence
|
from vbv_lernwelt.competence.models import ActionCompetence
|
||||||
from vbv_lernwelt.core.constants import (
|
from vbv_lernwelt.core.constants import (
|
||||||
|
TEST_AUSBILDUNGSVERANTWORTLICHER1_USER_ID,
|
||||||
TEST_BERUFSBILDNER1_USER_ID,
|
TEST_BERUFSBILDNER1_USER_ID,
|
||||||
TEST_COURSE_SESSION_BERN_ID,
|
TEST_COURSE_SESSION_BERN_ID,
|
||||||
TEST_COURSE_SESSION_ZURICH_ID,
|
TEST_COURSE_SESSION_ZURICH_ID,
|
||||||
|
|
@ -385,6 +386,31 @@ def create_test_course(
|
||||||
),
|
),
|
||||||
role="BERUFSBILDNER",
|
role="BERUFSBILDNER",
|
||||||
)
|
)
|
||||||
|
# Add Ausbildungsverantwortlicher
|
||||||
|
AgentParticipantRelation.objects.create(
|
||||||
|
agent=User.objects.get(id=TEST_AUSBILDUNGSVERANTWORTLICHER1_USER_ID),
|
||||||
|
participant=CourseSessionUser.objects.get(
|
||||||
|
user__id=TEST_STUDENT1_USER_ID,
|
||||||
|
course_session=cs_bern,
|
||||||
|
),
|
||||||
|
role="LEARNING_MENTOR",
|
||||||
|
)
|
||||||
|
AgentParticipantRelation.objects.create(
|
||||||
|
agent=User.objects.get(id=TEST_AUSBILDUNGSVERANTWORTLICHER1_USER_ID),
|
||||||
|
participant=CourseSessionUser.objects.get(
|
||||||
|
user__id=TEST_STUDENT2_USER_ID,
|
||||||
|
course_session=cs_zurich,
|
||||||
|
),
|
||||||
|
role="LEARNING_MENTOR",
|
||||||
|
)
|
||||||
|
AgentParticipantRelation.objects.create(
|
||||||
|
agent=User.objects.get(id=TEST_AUSBILDUNGSVERANTWORTLICHER1_USER_ID),
|
||||||
|
participant=CourseSessionUser.objects.get(
|
||||||
|
user__id=TEST_STUDENT3_USER_ID,
|
||||||
|
course_session=cs_bern,
|
||||||
|
),
|
||||||
|
role="LEARNING_MENTOR",
|
||||||
|
)
|
||||||
|
|
||||||
return course
|
return course
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,13 @@ from vbv_lernwelt.course_session.services.export_attendance import export_attend
|
||||||
|
|
||||||
class ExportBaseTestCase(TestCase):
|
class ExportBaseTestCase(TestCase):
|
||||||
def _check_export(self, wb, expected_data, max_row, max_col):
|
def _check_export(self, wb, expected_data, max_row, max_col):
|
||||||
|
debug_data = []
|
||||||
|
for row in wb.active.iter_rows(max_col=max_col, max_row=max_row):
|
||||||
|
row_data = []
|
||||||
|
for cell in row:
|
||||||
|
row_data.append(cell.value)
|
||||||
|
debug_data.append(row_data)
|
||||||
|
|
||||||
for row in wb.active.iter_rows(max_col=max_col, max_row=max_row):
|
for row in wb.active.iter_rows(max_col=max_col, max_row=max_row):
|
||||||
for cell in row:
|
for cell in row:
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ def export_persons(
|
||||||
csu_data = [
|
csu_data = [
|
||||||
create_csu_dict(csu, include_private_data=True) for csu in course_session_users
|
create_csu_dict(csu, include_private_data=True) for csu in course_session_users
|
||||||
]
|
]
|
||||||
|
csu_data.sort(key=lambda x: x["last_name"])
|
||||||
_create_sheet(
|
_create_sheet(
|
||||||
wb,
|
wb,
|
||||||
csu_data,
|
csu_data,
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ from django.utils.translation import activate
|
||||||
from openpyxl import load_workbook
|
from openpyxl import load_workbook
|
||||||
|
|
||||||
from vbv_lernwelt.core.constants import (
|
from vbv_lernwelt.core.constants import (
|
||||||
|
TEST_AUSBILDUNGSVERANTWORTLICHER1_USER_ID,
|
||||||
TEST_STUDENT1_USER_ID,
|
TEST_STUDENT1_USER_ID,
|
||||||
TEST_STUDENT2_USER_ID,
|
TEST_STUDENT2_USER_ID,
|
||||||
TEST_STUDENT3_USER_ID,
|
TEST_STUDENT3_USER_ID,
|
||||||
|
|
@ -13,9 +14,9 @@ from vbv_lernwelt.core.constants import (
|
||||||
from vbv_lernwelt.core.create_default_users import create_default_users
|
from vbv_lernwelt.core.create_default_users import create_default_users
|
||||||
from vbv_lernwelt.core.models import User
|
from vbv_lernwelt.core.models import User
|
||||||
from vbv_lernwelt.course.creators.test_course import create_test_course
|
from vbv_lernwelt.course.creators.test_course import create_test_course
|
||||||
from vbv_lernwelt.course.models import CourseSession
|
from vbv_lernwelt.course.models import CourseSession, CourseSessionUser
|
||||||
from vbv_lernwelt.course_session.tests.test_attendance_export import ExportBaseTestCase
|
from vbv_lernwelt.course_session.tests.test_attendance_export import ExportBaseTestCase
|
||||||
from vbv_lernwelt.dashboard.person_export import export_persons
|
from vbv_lernwelt.dashboard.views import _export_persons_as_xls_data
|
||||||
from vbv_lernwelt.learnpath.models import Circle
|
from vbv_lernwelt.learnpath.models import Circle
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -26,6 +27,8 @@ class PersonsExportTestCase(ExportBaseTestCase):
|
||||||
create_default_users()
|
create_default_users()
|
||||||
create_test_course(include_vv=False, with_sessions=True)
|
create_test_course(include_vv=False, with_sessions=True)
|
||||||
|
|
||||||
|
self.default_sheet_name = "Sheet"
|
||||||
|
|
||||||
self.course_session_be = CourseSession.objects.get(title="Test Bern 2022 a")
|
self.course_session_be = CourseSession.objects.get(title="Test Bern 2022 a")
|
||||||
self.course_session_zh = CourseSession.objects.get(title="Test Zürich 2022 a")
|
self.course_session_zh = CourseSession.objects.get(title="Test Zürich 2022 a")
|
||||||
|
|
||||||
|
|
@ -36,10 +39,32 @@ class PersonsExportTestCase(ExportBaseTestCase):
|
||||||
|
|
||||||
self.test_trainer1 = User.objects.get(id=TEST_TRAINER1_USER_ID)
|
self.test_trainer1 = User.objects.get(id=TEST_TRAINER1_USER_ID)
|
||||||
self.test_trainer2 = User.objects.get(id=TEST_TRAINER2_USER_ID)
|
self.test_trainer2 = User.objects.get(id=TEST_TRAINER2_USER_ID)
|
||||||
|
self.test_ausbildungsverantwortlicher1 = User.objects.get(
|
||||||
|
id=TEST_AUSBILDUNGSVERANTWORTLICHER1_USER_ID
|
||||||
|
)
|
||||||
self.test_student1 = User.objects.get(id=TEST_STUDENT1_USER_ID)
|
self.test_student1 = User.objects.get(id=TEST_STUDENT1_USER_ID)
|
||||||
self.test_student2 = User.objects.get(id=TEST_STUDENT2_USER_ID)
|
self.test_student2 = User.objects.get(id=TEST_STUDENT2_USER_ID)
|
||||||
self.test_student3 = User.objects.get(id=TEST_STUDENT3_USER_ID)
|
self.test_student3 = User.objects.get(id=TEST_STUDENT3_USER_ID)
|
||||||
|
|
||||||
|
self.test_student1_csu_be = CourseSessionUser.objects.get(
|
||||||
|
user=self.test_student1, course_session=self.course_session_be
|
||||||
|
)
|
||||||
|
self.test_student2_csu_be = CourseSessionUser.objects.get(
|
||||||
|
user=self.test_student2, course_session=self.course_session_be
|
||||||
|
)
|
||||||
|
self.test_student2_csu_zh = CourseSessionUser.objects.get(
|
||||||
|
user=self.test_student2, course_session=self.course_session_zh
|
||||||
|
)
|
||||||
|
self.test_student3_csu_be = CourseSessionUser.objects.get(
|
||||||
|
user=self.test_student3, course_session=self.course_session_be
|
||||||
|
)
|
||||||
|
self.test_trainer1_csu_be = CourseSessionUser.objects.get(
|
||||||
|
user=self.test_trainer1, course_session=self.course_session_be
|
||||||
|
)
|
||||||
|
self.test_trainer2_csu_zh = CourseSessionUser.objects.get(
|
||||||
|
user=self.test_trainer2, course_session=self.course_session_zh
|
||||||
|
)
|
||||||
|
|
||||||
self.test_student1_row = [
|
self.test_student1_row = [
|
||||||
self.test_student1.first_name,
|
self.test_student1.first_name,
|
||||||
self.test_student1.last_name,
|
self.test_student1.last_name,
|
||||||
|
|
@ -91,9 +116,9 @@ class PersonsExportTestCase(ExportBaseTestCase):
|
||||||
return expected_data
|
return expected_data
|
||||||
|
|
||||||
def _generate_workbook(self, user, course_session_ids):
|
def _generate_workbook(self, user, course_session_ids):
|
||||||
export_data = io.BytesIO(
|
data = _export_persons_as_xls_data(user, course_session_ids)
|
||||||
export_persons(user, course_session_ids, save_as_file=False)
|
self.assertIsNotNone(data)
|
||||||
)
|
export_data = io.BytesIO(data) # type: ignore
|
||||||
return load_workbook(export_data)
|
return load_workbook(export_data)
|
||||||
|
|
||||||
def _make_header(self):
|
def _make_header(self):
|
||||||
|
|
@ -107,10 +132,16 @@ class PersonsExportTestCase(ExportBaseTestCase):
|
||||||
]
|
]
|
||||||
|
|
||||||
def test_export_persons(self):
|
def test_export_persons(self):
|
||||||
wb = self._generate_workbook(self.test_trainer1, [self.course_session_be.id])
|
export_course_session_user_ids = [
|
||||||
|
self.test_student1_csu_be.id,
|
||||||
|
self.test_student2_csu_be.id,
|
||||||
|
self.test_student3_csu_be.id,
|
||||||
|
self.test_trainer1_csu_be.id,
|
||||||
|
]
|
||||||
|
wb = self._generate_workbook(self.test_trainer1, export_course_session_user_ids)
|
||||||
self.assertEqual(len(wb.sheetnames), 1)
|
self.assertEqual(len(wb.sheetnames), 1)
|
||||||
self.assertEqual(wb.sheetnames[0], "Test Bern 2022 a")
|
self.assertEqual(wb.sheetnames[0], self.default_sheet_name)
|
||||||
wb.active = wb["Test Bern 2022 a"]
|
wb.active = wb[self.default_sheet_name]
|
||||||
|
|
||||||
data = self._generate_expected_data(
|
data = self._generate_expected_data(
|
||||||
[
|
[
|
||||||
|
|
@ -120,33 +151,64 @@ class PersonsExportTestCase(ExportBaseTestCase):
|
||||||
self.test_trainer1_row,
|
self.test_trainer1_row,
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
self._check_export(wb, data, 5, 6)
|
||||||
|
|
||||||
self._check_export(wb, data, 4, 6)
|
export_course_session_user_ids = [
|
||||||
|
self.test_student2_csu_zh.id,
|
||||||
wb = self._generate_workbook(self.test_trainer2, [self.course_session_zh.id])
|
self.test_trainer2_csu_zh.id,
|
||||||
|
]
|
||||||
|
wb = self._generate_workbook(self.test_trainer2, export_course_session_user_ids)
|
||||||
self.assertEqual(len(wb.sheetnames), 1)
|
self.assertEqual(len(wb.sheetnames), 1)
|
||||||
self.assertEqual(wb.sheetnames[0], "Test Zürich 2022 a")
|
self.assertEqual(wb.sheetnames[0], self.default_sheet_name)
|
||||||
wb.active = wb["Test Zürich 2022 a"]
|
wb.active = wb[self.default_sheet_name]
|
||||||
|
|
||||||
data = self._generate_expected_data(
|
data = self._generate_expected_data(
|
||||||
[self.test_student2_row, self.test_trainer2_row]
|
[self.test_student2_row, self.test_trainer2_row]
|
||||||
)
|
)
|
||||||
self._check_export(wb, data, 3, 6)
|
self._check_export(wb, data, 3, 6)
|
||||||
|
|
||||||
def test_cannot_export_other_session(self):
|
def test_can_only_export_with_role(self):
|
||||||
wb = self._generate_workbook(self.test_trainer1, [self.course_session_zh.id])
|
csu = [
|
||||||
|
self.test_student1_csu_be.id,
|
||||||
|
self.test_student2_csu_be.id,
|
||||||
|
self.test_student3_csu_be.id,
|
||||||
|
self.test_student2_csu_zh.id,
|
||||||
|
]
|
||||||
|
wb = self._generate_workbook(self.test_trainer2, csu)
|
||||||
self.assertEqual(len(wb.sheetnames), 1)
|
self.assertEqual(len(wb.sheetnames), 1)
|
||||||
self.assertEqual(wb.sheetnames[0], "Test Zürich 2022 a")
|
self.assertEqual(wb.sheetnames[0], self.default_sheet_name)
|
||||||
wb.active = wb["Test Zürich 2022 a"]
|
wb.active = wb[self.default_sheet_name]
|
||||||
|
|
||||||
self._check_export(wb, [[None] * 6], 1, 6)
|
data = self._generate_expected_data([self.test_student2_row])
|
||||||
|
self._check_export(wb, data, 1, 6)
|
||||||
|
|
||||||
|
def test_can_only_export_with_agent_participant_relation(self):
|
||||||
|
csu = [
|
||||||
|
self.test_student1_csu_be.id,
|
||||||
|
self.test_student2_csu_be.id,
|
||||||
|
self.test_student3_csu_be.id,
|
||||||
|
self.test_student2_csu_zh.id,
|
||||||
|
]
|
||||||
|
wb = self._generate_workbook(self.test_ausbildungsverantwortlicher1, csu)
|
||||||
|
self.assertEqual(len(wb.sheetnames), 1)
|
||||||
|
self.assertEqual(wb.sheetnames[0], self.default_sheet_name)
|
||||||
|
wb.active = wb[self.default_sheet_name]
|
||||||
|
|
||||||
|
data = self._generate_expected_data([self.test_student2_row])
|
||||||
|
self._check_export(wb, data, 1, 6)
|
||||||
|
|
||||||
def test_export_in_fr(self):
|
def test_export_in_fr(self):
|
||||||
activate("fr")
|
activate("fr")
|
||||||
wb = self._generate_workbook(self.test_trainer1, [self.course_session_be.id])
|
export_course_session_user_ids = [
|
||||||
|
self.test_student1_csu_be.id,
|
||||||
|
self.test_student2_csu_be.id,
|
||||||
|
self.test_student3_csu_be.id,
|
||||||
|
self.test_trainer1_csu_be.id,
|
||||||
|
]
|
||||||
|
wb = self._generate_workbook(self.test_trainer1, export_course_session_user_ids)
|
||||||
self.assertEqual(len(wb.sheetnames), 1)
|
self.assertEqual(len(wb.sheetnames), 1)
|
||||||
self.assertEqual(wb.sheetnames[0], "Test Bern 2022 a")
|
self.assertEqual(wb.sheetnames[0], self.default_sheet_name)
|
||||||
wb.active = wb["Test Bern 2022 a"]
|
wb.active = wb[self.default_sheet_name]
|
||||||
|
|
||||||
header = [
|
header = [
|
||||||
"Prénom",
|
"Prénom",
|
||||||
|
|
@ -165,10 +227,16 @@ class PersonsExportTestCase(ExportBaseTestCase):
|
||||||
|
|
||||||
def test_export_in_it(self):
|
def test_export_in_it(self):
|
||||||
activate("it")
|
activate("it")
|
||||||
wb = self._generate_workbook(self.test_trainer1, [self.course_session_be.id])
|
export_course_session_user_ids = [
|
||||||
|
self.test_student1_csu_be.id,
|
||||||
|
self.test_student2_csu_be.id,
|
||||||
|
self.test_student3_csu_be.id,
|
||||||
|
self.test_trainer1_csu_be.id,
|
||||||
|
]
|
||||||
|
wb = self._generate_workbook(self.test_trainer1, export_course_session_user_ids)
|
||||||
self.assertEqual(len(wb.sheetnames), 1)
|
self.assertEqual(len(wb.sheetnames), 1)
|
||||||
self.assertEqual(wb.sheetnames[0], "Test Bern 2022 a")
|
self.assertEqual(wb.sheetnames[0], self.default_sheet_name)
|
||||||
wb.active = wb["Test Bern 2022 a"]
|
wb.active = wb[self.default_sheet_name]
|
||||||
|
|
||||||
header = [
|
header = [
|
||||||
"Nome",
|
"Nome",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue