vbv/server/vbv_lernwelt/dashboard/tests/test_export.py

226 lines
8.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import io
from openpyxl import load_workbook
from vbv_lernwelt.core.constants import (
TEST_STUDENT1_USER_ID,
TEST_STUDENT2_USER_ID,
TEST_STUDENT3_USER_ID,
TEST_TRAINER1_USER_ID,
TEST_TRAINER2_USER_ID,
)
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_session.tests.test_attendance_export import ExportBaseTestCase
from vbv_lernwelt.dashboard.person_export import export_persons
from vbv_lernwelt.learnpath.models import Circle
class PersonsExportTestCase(ExportBaseTestCase):
def setUp(self):
super().setUp()
create_default_users()
create_test_course(include_vv=False, with_sessions=True)
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.circle_fahrzeug = Circle.objects.get(
slug="test-lehrgang-lp-circle-fahrzeug"
)
self.circle_reisen = Circle.objects.get(slug="test-lehrgang-lp-circle-fahrzeug")
self.test_trainer1 = User.objects.get(id=TEST_TRAINER1_USER_ID)
self.test_trainer2 = User.objects.get(id=TEST_TRAINER2_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_row = [
self.test_student1.first_name,
self.test_student1.last_name,
self.test_student1.email,
None,
None,
"MEMBER",
]
self.test_student2_row = [
self.test_student2.first_name,
self.test_student2.last_name,
self.test_student2.email,
None,
None,
"MEMBER",
]
self.test_student3_row = [
self.test_student3.first_name,
self.test_student3.last_name,
self.test_student3.email,
None,
None,
"MEMBER",
]
self.test_trainer1_row = [
self.test_trainer1.first_name,
self.test_trainer1.last_name,
self.test_trainer1.email,
None,
None,
"EXPERT",
]
self.test_trainer2_row = [
self.test_trainer2.first_name,
self.test_trainer2.last_name,
self.test_trainer2.email,
None,
None,
"EXPERT",
]
def _generate_expected_data(self, rows):
expected_data = [
self._make_header(),
]
for r in rows:
expected_data.append(r)
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)
)
return load_workbook(export_data)
def _make_header(self):
return [
"Vorname",
"Nachname",
"Email",
"Lehrvertragsnummer",
"Telefon",
"Rolle",
]
def test_export_persons(self):
wb = self._generate_workbook(self.test_trainer1, [self.course_session_be.id])
self.assertEqual(len(wb.sheetnames), 1)
self.assertEqual(wb.sheetnames[0], "Test Bern 2022 a")
wb.active = wb["Test Bern 2022 a"]
data = self._generate_expected_data(
[
self.test_student1_row,
self.test_student2_row,
self.test_student3_row,
self.test_trainer1_row,
]
)
self._check_export(wb, data, 4, 6)
wb = self._generate_workbook(self.test_trainer2, [self.course_session_zh.id])
self.assertEqual(len(wb.sheetnames), 1)
self.assertEqual(wb.sheetnames[0], "Test Zürich 2022 a")
wb.active = wb["Test Zürich 2022 a"]
data = self._generate_expected_data(
[self.test_student2_row, self.test_trainer2_row]
)
self._check_export(wb, data, 3, 6)
# def test_export_feedback_with_cs_circle_pairs(self):
# cs_circle_pairs = [
# (
# self.course_session_be.id,
# [self.circle_fahrzeug.id, self.circle_reisen.id],
# ),
# (
# self.course_session_zh.id,
# [self.circle_reisen.id, self.circle_fahrzeug.id],
# ),
# ]
# export_data = io.BytesIO(
# export_feedback_with_circle_restriction(cs_circle_pairs, save_as_file=False)
# )
# wb = load_workbook(export_data)
# self.assertEqual(len(wb.sheetnames), 2)
# self.assertEqual(wb.sheetnames[0], "Fahrzeug")
# self.assertEqual(wb.sheetnames[1], "Reisen")
#
# self._check_export(wb, self.expected_data_fahrzeug, 3, 12)
#
# wb.active = wb["Reisen"]
# self._check_export(wb, self.expected_data_reisen, 2, 12)
# def test_does_not_include_unsubmitted_feedback(self):
# feedback = FeedbackResponse.objects.get(
# circle=self.circle_reisen,
# course_session=self.course_session_zh,
# feedback_user=self.test_student2,
# )
#
# feedback.submitted = False
# feedback.save()
#
# wb = self._generate_workbook(
# [self.course_session_be.id, self.course_session_zh.id]
# )
# self.assertEqual(len(wb.sheetnames), 1)
# self.assertEqual(wb.sheetnames[0], "Fahrzeug")
#
# self._check_export(wb, self.expected_data_fahrzeug, 3, 12)
#
# def test_french_export(self):
# activate("fr")
# wb = self._generate_workbook(
# [self.course_session_be.id, self.course_session_zh.id]
# )
#
# header = [
# "Opérations",
# "Date",
# "Degré de satisfaction au global",
# "Degré de réalisation des objectifs",
# "As-tu limpression de bien maîtriser les sujets qui ont été abordés pendant le cours ?",
# "Les travaux préparatoires étaient-ils clairs et compréhensibles ?",
# "Que penses-tu des compétences techniques de la personne chargée du cours et de sa maîtrise du sujet ?",
# "Les questions et les suggestions des participants ont-elles été prises au sérieux et traitées correctement ?",
# "Souhaites-tu ajouter quelque chose à lintention de la personne chargée du cours ?",
# "Est-ce que tu recommandes ce cours ?",
# "Quest-ce qui ta particulièrement plu ?",
# "À ton avis, quels sont les points qui pourraient être améliorés ?",
# ]
#
# self.expected_data_fahrzeug[0] = header
#
# self._check_export(wb, self.expected_data_fahrzeug, 3, 12)
#
# def test_italian_export(self):
# activate("it")
# wb = self._generate_workbook(
# [self.course_session_be.id, self.course_session_zh.id]
# )
#
# header = [
# "Svolgimenti",
# "Data",
# "Soddisfazione complessiva",
# "Raggiungimento complessivo degli obiettivi",
# "Come valuti il tuo livello di preparazione sui temi dopo il corso?",
# "Gli incarichi di preparazione erano chiari e comprensibili?",
# "Come valuti il livello di preparazione sui temi e le competenze specialistiche dellistruttore/istruttrice del corso?",
# "Le domande e i suggerimenti dei/delle partecipanti al corso sono stati accolti e presi sul serio?",
# "Cosaltro vorresti ancora dire allistruttore/istruttrice del corso?",
# "Raccomanderesti il corso?",
# "Coshai apprezzato particolarmente?",
# "Dove vedi un potenziale di miglioramento?",
# ]
#
# self.expected_data_fahrzeug[0] = header
#
# self._check_export(wb, self.expected_data_fahrzeug, 3, 12)