Fix unittests
This commit is contained in:
parent
b98b4f8792
commit
0f134b8a76
|
|
@ -8,7 +8,7 @@ import {
|
|||
exportPersons,
|
||||
} from "@/services/dashboard";
|
||||
import { useUserStore } from "@/stores/user";
|
||||
import type { DashboardPersonsPageMode, XlsPersonExportRequestData } from "@/types";
|
||||
import type { DashboardPersonsPageMode } from "@/types";
|
||||
import { openDataAsXls } from "@/utils/export";
|
||||
import { useRouteQuery } from "@vueuse/router";
|
||||
import dayjs from "dayjs";
|
||||
|
|
@ -317,13 +317,13 @@ function personRoleDisplayValue(personCourseSession: DashboardPersonCourseSessio
|
|||
}
|
||||
|
||||
async function exportData() {
|
||||
const requestData: XlsPersonExportRequestData = filteredPersons.value.reduce(
|
||||
const requestData = filteredPersons.value.reduce(
|
||||
(acc, person) => {
|
||||
acc.courseSessionUserIds.push(person.csu_id);
|
||||
return acc;
|
||||
},
|
||||
{
|
||||
courseSessionUserIds: [],
|
||||
courseSessionUserIds: [] as string[],
|
||||
}
|
||||
);
|
||||
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.core.constants import (
|
||||
TEST_AUSBILDUNGSVERANTWORTLICHER1_USER_ID,
|
||||
TEST_BERUFSBILDNER1_USER_ID,
|
||||
TEST_COURSE_SESSION_BERN_ID,
|
||||
TEST_COURSE_SESSION_ZURICH_ID,
|
||||
|
|
@ -385,6 +386,31 @@ def create_test_course(
|
|||
),
|
||||
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
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,13 @@ from vbv_lernwelt.course_session.services.export_attendance import export_attend
|
|||
|
||||
class ExportBaseTestCase(TestCase):
|
||||
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 cell in row:
|
||||
self.assertEqual(
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ def export_persons(
|
|||
csu_data = [
|
||||
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(
|
||||
wb,
|
||||
csu_data,
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ from django.utils.translation import activate
|
|||
from openpyxl import load_workbook
|
||||
|
||||
from vbv_lernwelt.core.constants import (
|
||||
TEST_AUSBILDUNGSVERANTWORTLICHER1_USER_ID,
|
||||
TEST_STUDENT1_USER_ID,
|
||||
TEST_STUDENT2_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.models import User
|
||||
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.dashboard.person_export import export_persons
|
||||
from vbv_lernwelt.dashboard.views import _export_persons_as_xls_data
|
||||
from vbv_lernwelt.learnpath.models import Circle
|
||||
|
||||
|
||||
|
|
@ -26,6 +27,8 @@ class PersonsExportTestCase(ExportBaseTestCase):
|
|||
create_default_users()
|
||||
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_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_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_student2 = User.objects.get(id=TEST_STUDENT2_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.first_name,
|
||||
self.test_student1.last_name,
|
||||
|
|
@ -91,9 +116,9 @@ class PersonsExportTestCase(ExportBaseTestCase):
|
|||
return expected_data
|
||||
|
||||
def _generate_workbook(self, user, course_session_ids):
|
||||
export_data = io.BytesIO(
|
||||
export_persons(user, course_session_ids, save_as_file=False)
|
||||
)
|
||||
data = _export_persons_as_xls_data(user, course_session_ids)
|
||||
self.assertIsNotNone(data)
|
||||
export_data = io.BytesIO(data) # type: ignore
|
||||
return load_workbook(export_data)
|
||||
|
||||
def _make_header(self):
|
||||
|
|
@ -107,10 +132,16 @@ class PersonsExportTestCase(ExportBaseTestCase):
|
|||
]
|
||||
|
||||
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(wb.sheetnames[0], "Test Bern 2022 a")
|
||||
wb.active = wb["Test Bern 2022 a"]
|
||||
self.assertEqual(wb.sheetnames[0], self.default_sheet_name)
|
||||
wb.active = wb[self.default_sheet_name]
|
||||
|
||||
data = self._generate_expected_data(
|
||||
[
|
||||
|
|
@ -120,33 +151,64 @@ class PersonsExportTestCase(ExportBaseTestCase):
|
|||
self.test_trainer1_row,
|
||||
]
|
||||
)
|
||||
self._check_export(wb, data, 5, 6)
|
||||
|
||||
self._check_export(wb, data, 4, 6)
|
||||
|
||||
wb = self._generate_workbook(self.test_trainer2, [self.course_session_zh.id])
|
||||
export_course_session_user_ids = [
|
||||
self.test_student2_csu_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(wb.sheetnames[0], "Test Zürich 2022 a")
|
||||
wb.active = wb["Test Zürich 2022 a"]
|
||||
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.test_trainer2_row]
|
||||
)
|
||||
self._check_export(wb, data, 3, 6)
|
||||
|
||||
def test_cannot_export_other_session(self):
|
||||
wb = self._generate_workbook(self.test_trainer1, [self.course_session_zh.id])
|
||||
def test_can_only_export_with_role(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_trainer2, csu)
|
||||
self.assertEqual(len(wb.sheetnames), 1)
|
||||
self.assertEqual(wb.sheetnames[0], "Test Zürich 2022 a")
|
||||
wb.active = wb["Test Zürich 2022 a"]
|
||||
self.assertEqual(wb.sheetnames[0], self.default_sheet_name)
|
||||
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):
|
||||
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(wb.sheetnames[0], "Test Bern 2022 a")
|
||||
wb.active = wb["Test Bern 2022 a"]
|
||||
self.assertEqual(wb.sheetnames[0], self.default_sheet_name)
|
||||
wb.active = wb[self.default_sheet_name]
|
||||
|
||||
header = [
|
||||
"Prénom",
|
||||
|
|
@ -165,10 +227,16 @@ class PersonsExportTestCase(ExportBaseTestCase):
|
|||
|
||||
def test_export_in_it(self):
|
||||
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(wb.sheetnames[0], "Test Bern 2022 a")
|
||||
wb.active = wb["Test Bern 2022 a"]
|
||||
self.assertEqual(wb.sheetnames[0], self.default_sheet_name)
|
||||
wb.active = wb[self.default_sheet_name]
|
||||
|
||||
header = [
|
||||
"Nome",
|
||||
|
|
|
|||
Loading…
Reference in New Issue