WIP: Fix and extend importer test
This commit is contained in:
parent
502aa9c543
commit
5ed289c912
|
|
@ -1,252 +0,0 @@
|
||||||
from django.test import TestCase
|
|
||||||
from django.utils import timezone
|
|
||||||
|
|
||||||
from vbv_lernwelt.assignment.models import AssignmentType
|
|
||||||
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, CourseSessionUser
|
|
||||||
from vbv_lernwelt.course_session.models import (
|
|
||||||
CourseSessionAssignment,
|
|
||||||
CourseSessionAttendanceCourse,
|
|
||||||
)
|
|
||||||
from vbv_lernwelt.duedate.models import DueDate
|
|
||||||
from vbv_lernwelt.importer.services import (
|
|
||||||
create_or_update_course_session,
|
|
||||||
create_or_update_trainer,
|
|
||||||
)
|
|
||||||
from vbv_lernwelt.learnpath.models import (
|
|
||||||
Circle,
|
|
||||||
LearningContentAssignment,
|
|
||||||
LearningContentAttendanceCourse,
|
|
||||||
)
|
|
||||||
|
|
||||||
TEST_SESSION = {
|
|
||||||
"ID": "AG 2023 A",
|
|
||||||
"Generation": "2023",
|
|
||||||
"Region": "Aargau",
|
|
||||||
"Sprache": "de",
|
|
||||||
"Klasse": "A",
|
|
||||||
"Kickoff Start": "30.08.2023, 09:15",
|
|
||||||
"Kickoff Ende": "30.08.2023, 17:00",
|
|
||||||
"Kickoff Raum": "E34",
|
|
||||||
"Kickoff Standort": "HKV Aarau",
|
|
||||||
"Kickoff Adresse": "Bahnhofstrasse 46, 5000, Aarau",
|
|
||||||
"Basis Start": "06.09.2023, 09:15",
|
|
||||||
"Basis Ende": "06.09.2023, 17:00",
|
|
||||||
"Basis Raum": "E34",
|
|
||||||
"Basis Standort": "HKV Aarau",
|
|
||||||
"Basis Adresse": "Bahnhofstrasse 46, 5000, Aarau",
|
|
||||||
"Fahrzeug Start": "08.11.2023, 09:15",
|
|
||||||
"Fahrzeug Ende": "08.11.2023, 17:00",
|
|
||||||
"Fahrzeug Raum": "E34",
|
|
||||||
"Fahrzeug Standort": "HKV Aarau",
|
|
||||||
"Fahrzeug Adresse": "Bahnhofstrasse 46, 5000, Aarau",
|
|
||||||
"Haushalt Teil 1 Start": "17.01.2024, 09:15",
|
|
||||||
"Hauhalt Teil 1 Ende": "17.01.2024, 17:00",
|
|
||||||
"Haushalt Teil 1 Raum": "E34",
|
|
||||||
"Haushalt Teil 1 Standort": "HKV Aarau",
|
|
||||||
"Haushalt Teil 1 Adresse": "Bahnhofstrasse 46, 5000, Aarau",
|
|
||||||
"Haushalt Teil 2 Start": "20.03.2024, 09:15",
|
|
||||||
"Haushalt Teil 2 Ende": "20.03.2024, 17:00",
|
|
||||||
"Haushalt Teil 2 Raum": "E34",
|
|
||||||
"Haushalt Teil 2 Standort": "HKV Aarau",
|
|
||||||
"Haushalt Teil 2 Adresse": "Bahnhofstrasse 46, 5000, Aarau",
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST_CIRCLES = ["Fahrzeug"]
|
|
||||||
|
|
||||||
LP_DATA = {
|
|
||||||
"Fahrzeug": {
|
|
||||||
"de": {
|
|
||||||
"title": "Fahrzeug",
|
|
||||||
"slug": "fahrzeug",
|
|
||||||
"presence_course": "fahrzeug-lc-präsenzkurs-fahrzeug",
|
|
||||||
"assignments": [
|
|
||||||
"fahrzeug-lc-überprüfen-einer-motorfahrzeug-versicherungspolice",
|
|
||||||
"fahrzeug-lc-fahrzeug-mein-erstes-auto",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
TEST_TRAINER = {
|
|
||||||
"Name": "Muster",
|
|
||||||
"Vorname": "Hans",
|
|
||||||
"Email": "Hans.muster@eiger-versicherung.ch",
|
|
||||||
"Sprache": "de",
|
|
||||||
"Generation": "AG 2023",
|
|
||||||
"Klasse": "A",
|
|
||||||
"Circles": "Fahrzeug",
|
|
||||||
"Anrede": "Herr",
|
|
||||||
"Tel. Geschäft": "031 321 32 32",
|
|
||||||
"Tel. Mobil": "079 321 32 32",
|
|
||||||
"Strasse": "Thunstrasse 1",
|
|
||||||
"PLZ": "3014",
|
|
||||||
"Wohnort": "Bern",
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
class EdoniqSessionImportTestCase(TestCase):
|
|
||||||
def setUp(self) -> None:
|
|
||||||
create_default_users()
|
|
||||||
self.course = create_test_course(with_sessions=False)
|
|
||||||
|
|
||||||
def test_session_import(self):
|
|
||||||
create_or_update_course_session(
|
|
||||||
self.course, TEST_SESSION, "de", circle_keys=TEST_CIRCLES
|
|
||||||
)
|
|
||||||
cs = CourseSession.objects.get(import_id="AG 2023 A")
|
|
||||||
|
|
||||||
self.assertEqual(cs.course, self.course)
|
|
||||||
|
|
||||||
for circle_name in TEST_CIRCLES:
|
|
||||||
self._check_attendance(circle_name, cs, TEST_SESSION)
|
|
||||||
self._check_assignments(circle_name, cs, TEST_SESSION)
|
|
||||||
|
|
||||||
self.assertEqual(4, DueDate.objects.count())
|
|
||||||
|
|
||||||
def test_update_session_import(self):
|
|
||||||
create_or_update_course_session(
|
|
||||||
self.course, TEST_SESSION, "de", circle_keys=TEST_CIRCLES
|
|
||||||
)
|
|
||||||
cs = CourseSession.objects.get(import_id="AG 2023 A")
|
|
||||||
|
|
||||||
trainer1 = User.objects.get(email="test-trainer1@example.com")
|
|
||||||
csu = CourseSessionUser.objects.create(
|
|
||||||
course_session=cs,
|
|
||||||
user=trainer1,
|
|
||||||
role=CourseSessionUser.Role.EXPERT,
|
|
||||||
)
|
|
||||||
csu.expert.add(Circle.objects.get(slug="test-lehrgang-lp-circle-fahrzeug"))
|
|
||||||
|
|
||||||
UPDATE_SESSION = {
|
|
||||||
"ID": "AG 2023 A",
|
|
||||||
"Generation": "2023",
|
|
||||||
"Region": "Aargau",
|
|
||||||
"Sprache": "de",
|
|
||||||
"Klasse": "A",
|
|
||||||
"Fahrzeug Start": "09.11.2023, 10:15",
|
|
||||||
"Fahrzeug Ende": "09.11.2023, 16:00",
|
|
||||||
"Fahrzeug Raum": "E35",
|
|
||||||
"Fahrzeug Standort": "HKV Aarau2",
|
|
||||||
"Fahrzeug Adresse": "Bahnhofstrasse 460, 5001, Aarau2",
|
|
||||||
}
|
|
||||||
|
|
||||||
create_or_update_course_session(
|
|
||||||
self.course, UPDATE_SESSION, "de", circle_keys=TEST_CIRCLES
|
|
||||||
)
|
|
||||||
|
|
||||||
for circle_name in TEST_CIRCLES:
|
|
||||||
self._check_attendance(
|
|
||||||
circle_name,
|
|
||||||
cs,
|
|
||||||
UPDATE_SESSION,
|
|
||||||
trainer_name=f"{trainer1.first_name} {trainer1.last_name}",
|
|
||||||
)
|
|
||||||
self._check_assignments(circle_name, cs, UPDATE_SESSION)
|
|
||||||
|
|
||||||
self.assertEqual(4, DueDate.objects.count())
|
|
||||||
|
|
||||||
def _check_attendance(
|
|
||||||
self,
|
|
||||||
circle_name: str,
|
|
||||||
cs: CourseSession,
|
|
||||||
session_data: dict,
|
|
||||||
trainer_name: str = "",
|
|
||||||
):
|
|
||||||
attendance = LearningContentAttendanceCourse.objects.filter(
|
|
||||||
slug=f"{self.course.slug}-lp-circle-{LP_DATA[circle_name]['de']['presence_course']}",
|
|
||||||
)
|
|
||||||
self.assertEqual(attendance.count(), 1) # only one attendance per circle
|
|
||||||
|
|
||||||
csac = CourseSessionAttendanceCourse.objects.get(
|
|
||||||
course_session=cs, learning_content=attendance.first()
|
|
||||||
)
|
|
||||||
|
|
||||||
self.assertEqual(
|
|
||||||
f"{session_data[f'{circle_name} Raum']}, {session_data[f'{circle_name} Standort']}, {session_data[f'{circle_name} Adresse']}",
|
|
||||||
csac.location,
|
|
||||||
)
|
|
||||||
self.assertEqual(
|
|
||||||
f"{session_data[f'{circle_name} Start']}",
|
|
||||||
timezone.localtime(csac.due_date.start).strftime("%d.%m.%Y, %H:%M"),
|
|
||||||
)
|
|
||||||
self.assertEqual(
|
|
||||||
f"{session_data[f'{circle_name} Ende']}",
|
|
||||||
timezone.localtime(csac.due_date.end).strftime("%d.%m.%Y, %H:%M"),
|
|
||||||
)
|
|
||||||
self.assertEqual(trainer_name, csac.trainer)
|
|
||||||
|
|
||||||
def _check_assignments(
|
|
||||||
self, circle_name: str, cs: CourseSession, session_data: dict
|
|
||||||
):
|
|
||||||
for assignment_slug in LP_DATA[circle_name]["de"]["assignments"]:
|
|
||||||
csa = CourseSessionAssignment.objects.get(
|
|
||||||
course_session=cs,
|
|
||||||
learning_content=LearningContentAssignment.objects.get(
|
|
||||||
slug=f"{self.course.slug}-lp-circle-{assignment_slug}"
|
|
||||||
),
|
|
||||||
)
|
|
||||||
if (
|
|
||||||
csa.learning_content.assignment_type
|
|
||||||
== AssignmentType.PREP_ASSIGNMENT.value
|
|
||||||
):
|
|
||||||
self.assertEqual(
|
|
||||||
f"{session_data[f'{circle_name} Start']}",
|
|
||||||
timezone.localtime(csa.submission_deadline.end).strftime(
|
|
||||||
"%d.%m.%Y, %H:%M"
|
|
||||||
),
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class EdoniqTrainerImportTestCase(TestCase):
|
|
||||||
def setUp(self) -> None:
|
|
||||||
create_default_users()
|
|
||||||
self.course = create_test_course(with_sessions=False)
|
|
||||||
|
|
||||||
def test_trainer_import(self):
|
|
||||||
create_or_update_course_session(
|
|
||||||
self.course, TEST_SESSION, "de", circle_keys=TEST_CIRCLES
|
|
||||||
)
|
|
||||||
cs = CourseSession.objects.get(import_id="AG 2023 A")
|
|
||||||
|
|
||||||
create_or_update_trainer(self.course, TEST_TRAINER)
|
|
||||||
csu = CourseSessionUser.objects.filter(
|
|
||||||
course_session=cs,
|
|
||||||
role=CourseSessionUser.Role.EXPERT,
|
|
||||||
).first()
|
|
||||||
|
|
||||||
self.assertEqual(csu.user.first_name, TEST_TRAINER["Vorname"])
|
|
||||||
self.assertEqual(csu.expert.first().slug, "test-lehrgang-lp-circle-fahrzeug")
|
|
||||||
|
|
||||||
def test_update_trainer_import(self):
|
|
||||||
create_or_update_course_session(
|
|
||||||
self.course, TEST_SESSION, "de", circle_keys=TEST_CIRCLES
|
|
||||||
)
|
|
||||||
cs = CourseSession.objects.get(import_id="AG 2023 A")
|
|
||||||
|
|
||||||
create_or_update_trainer(self.course, TEST_TRAINER)
|
|
||||||
UPDATE_TRAINER = {
|
|
||||||
"Name": "Hansmeier",
|
|
||||||
"Vorname": "Hans",
|
|
||||||
"Email": "Hans.muster@eiger-versicherung.ch",
|
|
||||||
"Sprache": "de",
|
|
||||||
"Generation": "AG 2023",
|
|
||||||
"Klasse": "A",
|
|
||||||
"Circles": "Fahrzeug",
|
|
||||||
"Anrede": "Herr",
|
|
||||||
"Tel. Geschäft": "031 321 32 32",
|
|
||||||
"Tel. Mobil": "079 321 32 32",
|
|
||||||
"Strasse": "Thunstrasse 1",
|
|
||||||
"PLZ": "3014",
|
|
||||||
"Wohnort": "Bern",
|
|
||||||
}
|
|
||||||
|
|
||||||
csu = CourseSessionUser.objects.filter(
|
|
||||||
course_session=cs,
|
|
||||||
role=CourseSessionUser.Role.EXPERT,
|
|
||||||
).first()
|
|
||||||
create_or_update_trainer(self.course, UPDATE_TRAINER)
|
|
||||||
self.assertEqual(csu.user.first_name, UPDATE_TRAINER["Vorname"])
|
|
||||||
self.assertEqual(csu.expert.first().slug, "test-lehrgang-lp-circle-fahrzeug")
|
|
||||||
|
|
@ -326,27 +326,36 @@ def create_or_update_course_session(
|
||||||
|
|
||||||
if expert:
|
if expert:
|
||||||
csa.trainer = f"{expert.user.first_name} {expert.user.last_name}"
|
csa.trainer = f"{expert.user.first_name} {expert.user.last_name}"
|
||||||
csa.due_date.start = timezone.make_aware(start)
|
|
||||||
csa.due_date.end = timezone.make_aware(end)
|
if start:
|
||||||
|
csa.due_date.start = timezone.make_aware(start)
|
||||||
|
if end:
|
||||||
|
csa.due_date.end = timezone.make_aware(end)
|
||||||
csa.due_date.save()
|
csa.due_date.save()
|
||||||
csa.save()
|
csa.save()
|
||||||
|
|
||||||
for assignment_slug in circle_data["assignments"]:
|
for assignment_slug in circle_data["assignments"]:
|
||||||
logger.debug("import", slug=f"{course.slug}-lp-circle-{assignment_slug}")
|
logger.debug("import", slug=f"{course.slug}-lp-circle-{assignment_slug}")
|
||||||
|
|
||||||
csa, _created = CourseSessionAssignment.objects.get_or_create(
|
learning_content = LearningContentAssignment.objects.filter(
|
||||||
course_session=cs,
|
slug=f"{course.slug}-lp-circle-{assignment_slug}"
|
||||||
learning_content=LearningContentAssignment.objects.get(
|
).first()
|
||||||
slug=f"{course.slug}-lp-circle-{assignment_slug}"
|
|
||||||
),
|
|
||||||
)
|
|
||||||
|
|
||||||
if (
|
if learning_content:
|
||||||
csa.learning_content.assignment_type
|
csa, _created = CourseSessionAssignment.objects.get_or_create(
|
||||||
== AssignmentType.PREP_ASSIGNMENT.value
|
course_session=cs,
|
||||||
):
|
learning_content=LearningContentAssignment.objects.get(
|
||||||
csa.submission_deadline.end = timezone.make_aware(start)
|
slug=f"{course.slug}-lp-circle-{assignment_slug}"
|
||||||
csa.submission_deadline.save()
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
if (
|
||||||
|
csa.learning_content.assignment_type
|
||||||
|
== AssignmentType.PREP_ASSIGNMENT.value
|
||||||
|
and start
|
||||||
|
):
|
||||||
|
csa.submission_deadline.end = timezone.make_aware(start)
|
||||||
|
csa.submission_deadline.save()
|
||||||
|
|
||||||
return cs
|
return cs
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,15 +3,19 @@ import os
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
from openpyxl.reader.excel import load_workbook
|
from openpyxl.reader.excel import load_workbook
|
||||||
|
|
||||||
|
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.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.models import CourseSessionAttendanceCourse
|
from vbv_lernwelt.course_session.models import CourseSessionAttendanceCourse
|
||||||
|
from vbv_lernwelt.duedate.models import DueDate
|
||||||
from vbv_lernwelt.importer.services import (
|
from vbv_lernwelt.importer.services import (
|
||||||
create_or_update_course_session,
|
create_or_update_course_session,
|
||||||
DataImportError,
|
DataImportError,
|
||||||
validate_row_data,
|
validate_row_data,
|
||||||
)
|
)
|
||||||
from vbv_lernwelt.importer.utils import calc_header_tuple_list_from_pyxl_sheet
|
from vbv_lernwelt.importer.utils import calc_header_tuple_list_from_pyxl_sheet
|
||||||
|
from vbv_lernwelt.learnpath.models import Circle
|
||||||
|
|
||||||
test_dir = os.path.dirname(os.path.abspath(__file__))
|
test_dir = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
|
||||||
|
|
@ -28,9 +32,8 @@ class ImportCourseSessionTestCase(TestCase):
|
||||||
|
|
||||||
tuple_list = calc_header_tuple_list_from_pyxl_sheet(sheet)
|
tuple_list = calc_header_tuple_list_from_pyxl_sheet(sheet)
|
||||||
for row in tuple_list:
|
for row in tuple_list:
|
||||||
print(row)
|
|
||||||
create_or_update_course_session(
|
create_or_update_course_session(
|
||||||
self.course, dict(row), language="de", circle_keys=["Fahrzeug"]
|
self.course, dict(row), language="de", circle_keys=["Kickoff"]
|
||||||
)
|
)
|
||||||
|
|
||||||
self.assertEqual(CourseSession.objects.count(), 6)
|
self.assertEqual(CourseSession.objects.count(), 6)
|
||||||
|
|
@ -38,23 +41,24 @@ class ImportCourseSessionTestCase(TestCase):
|
||||||
|
|
||||||
class CreateOrUpdateCourseSessionTestCase(TestCase):
|
class CreateOrUpdateCourseSessionTestCase(TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
create_default_users()
|
||||||
self.course = create_test_course(include_vv=False)
|
self.course = create_test_course(include_vv=False)
|
||||||
|
|
||||||
def test_create_course_session(self):
|
def test_create_course_session(self):
|
||||||
row = [
|
row = [
|
||||||
("ID", "DE 2023 A"),
|
("ID", "AG 2023 A"),
|
||||||
("Generation", 2023),
|
("Generation", 2023),
|
||||||
("Region", "Deutschschweiz"),
|
("Region", "Aargau"),
|
||||||
("Sprache", "de"),
|
("Sprache", "de"),
|
||||||
("Klasse", "A"),
|
("Klasse", "A"),
|
||||||
("Fahrzeug Start", "06.06.2023, 13:30"),
|
("Fahrzeug Start", "06.06.2023, 13:30"),
|
||||||
("Fahrzeug Ende", "06.06.2023, 15:00"),
|
("Fahrzeug Ende", "06.06.2023, 15:00"),
|
||||||
(
|
(
|
||||||
"Fahrzeug Raum",
|
"Fahrzeug Raum",
|
||||||
"https://teams.microsoft.com/l/meetup-join/19%3ameeting_N2I5YzViZTQtYTM2Ny00OTYwLTgzNzAtYWI4OTQzODcxNTlj%40thread.v2/0?context=%7b%22Tid%22%3a%22fedd03c8-a756-4803-8f27-0db8f7c488f2%22%2c%22Oid%22%3a%22f92e6382-3884-4e71-a2fd-b305a75d9812%22%7d",
|
"E64",
|
||||||
),
|
),
|
||||||
("Fahrzeug Standort", None),
|
("Fahrzeug Standort", "HKV Aarau"),
|
||||||
("Fahrzeug Adresse", None),
|
("Fahrzeug Adresse", "Bahnhofstrasse 460, 5001, Aarau"),
|
||||||
]
|
]
|
||||||
|
|
||||||
data = dict(row)
|
data = dict(row)
|
||||||
|
|
@ -63,10 +67,10 @@ class CreateOrUpdateCourseSessionTestCase(TestCase):
|
||||||
self.course, data, language="de", circle_keys=["Fahrzeug"]
|
self.course, data, language="de", circle_keys=["Fahrzeug"]
|
||||||
)
|
)
|
||||||
|
|
||||||
self.assertEqual(cs.import_id, "DE 2023 A")
|
self.assertEqual(cs.import_id, "AG 2023 A")
|
||||||
self.assertEqual(cs.title, "Deutschschweiz 2023 A")
|
self.assertEqual(cs.title, "Aargau 2023 A")
|
||||||
self.assertEqual(cs.generation, "2023")
|
self.assertEqual(cs.generation, "2023")
|
||||||
self.assertEqual(cs.region, "Deutschschweiz")
|
self.assertEqual(cs.region, "Aargau")
|
||||||
self.assertEqual(cs.group, "A")
|
self.assertEqual(cs.group, "A")
|
||||||
|
|
||||||
attendance_course = CourseSessionAttendanceCourse.objects.first()
|
attendance_course = CourseSessionAttendanceCourse.objects.first()
|
||||||
|
|
@ -76,29 +80,28 @@ class CreateOrUpdateCourseSessionTestCase(TestCase):
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
attendance_course.due_date.end.isoformat(), "2023-06-06T13:00:00+00:00"
|
attendance_course.due_date.end.isoformat(), "2023-06-06T13:00:00+00:00"
|
||||||
)
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
f"E64, HKV Aarau, Bahnhofstrasse 460, 5001, Aarau",
|
||||||
|
attendance_course.location,
|
||||||
|
)
|
||||||
|
self.assertEqual("", attendance_course.trainer)
|
||||||
|
self.assertEqual(4, DueDate.objects.count())
|
||||||
|
|
||||||
def test_update_course_session(self):
|
def test_update_course_session(self):
|
||||||
cs = CourseSession.objects.create(
|
|
||||||
course_id=self.course.id,
|
|
||||||
title="Deutschschweiz 2023 A",
|
|
||||||
import_id="DE 2023",
|
|
||||||
group="A",
|
|
||||||
)
|
|
||||||
|
|
||||||
row = [
|
row = [
|
||||||
("ID", "DE 2023"),
|
("ID", "AG 2023 A"),
|
||||||
("Generation", 2023),
|
("Generation", 2023),
|
||||||
("Region", "Deutschschweiz"),
|
("Region", "Aargau"),
|
||||||
("Sprache", "de"),
|
("Sprache", "de"),
|
||||||
("Klasse", "A"),
|
("Klasse", "A"),
|
||||||
("Fahrzeug Start", "06.06.2023, 13:30"),
|
("Fahrzeug Start", "06.06.2023, 13:30"),
|
||||||
("Fahrzeug Ende", "06.06.2023, 15:00"),
|
("Fahrzeug Ende", "06.06.2023, 15:00"),
|
||||||
(
|
(
|
||||||
"Fahrzeug Raum",
|
"Fahrzeug Raum",
|
||||||
"https://teams.microsoft.com/l/meetup-join/19%3ameeting_N2I5YzViZTQtYTM2Ny00OTYwLTgzNzAtYWI4OTQzODcxNTlj%40thread.v2/0?context=%7b%22Tid%22%3a%22fedd03c8-a756-4803-8f27-0db8f7c488f2%22%2c%22Oid%22%3a%22f92e6382-3884-4e71-a2fd-b305a75d9812%22%7d",
|
"E64",
|
||||||
),
|
),
|
||||||
("Fahrzeug Standort", None),
|
("Fahrzeug Standort", "HKV Aarau"),
|
||||||
("Fahrzeug Adresse", None),
|
("Fahrzeug Adresse", "Bahnhofstrasse 460, 5001, Aarau"),
|
||||||
]
|
]
|
||||||
|
|
||||||
data = dict(row)
|
data = dict(row)
|
||||||
|
|
@ -107,21 +110,59 @@ class CreateOrUpdateCourseSessionTestCase(TestCase):
|
||||||
self.course, data, language="de", circle_keys=["Fahrzeug"]
|
self.course, data, language="de", circle_keys=["Fahrzeug"]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
trainer1 = User.objects.get(email="test-trainer1@example.com")
|
||||||
|
csu = CourseSessionUser.objects.create(
|
||||||
|
course_session=cs,
|
||||||
|
user=trainer1,
|
||||||
|
role=CourseSessionUser.Role.EXPERT,
|
||||||
|
)
|
||||||
|
csu.expert.add(Circle.objects.get(slug="test-lehrgang-lp-circle-fahrzeug"))
|
||||||
|
|
||||||
|
update_row = [
|
||||||
|
("ID", "AG 2023 A"),
|
||||||
|
("Generation", 2023),
|
||||||
|
("Region", "Aargau"),
|
||||||
|
("Sprache", "de"),
|
||||||
|
("Klasse", "A"),
|
||||||
|
("Fahrzeug Start", "06.06.2023, 14:30"),
|
||||||
|
("Fahrzeug Ende", "06.06.2023, 17:00"),
|
||||||
|
(
|
||||||
|
"Fahrzeug Raum",
|
||||||
|
"E666",
|
||||||
|
),
|
||||||
|
("Fahrzeug Standort", "HKV Aarau2"),
|
||||||
|
("Fahrzeug Adresse", "Bahnhofstrasse 460, 5002, Aarau"),
|
||||||
|
]
|
||||||
|
|
||||||
|
data = dict(update_row)
|
||||||
|
|
||||||
|
cs = create_or_update_course_session(
|
||||||
|
self.course, data, language="de", circle_keys=["Fahrzeug"]
|
||||||
|
)
|
||||||
|
|
||||||
self.assertEqual(1, CourseSession.objects.count())
|
self.assertEqual(1, CourseSession.objects.count())
|
||||||
|
|
||||||
self.assertEqual(cs.import_id, "DE 2023")
|
self.assertEqual(cs.import_id, "AG 2023 A")
|
||||||
self.assertEqual(cs.title, "Deutschschweiz 2023 A")
|
self.assertEqual(cs.title, "Aargau 2023 A")
|
||||||
self.assertEqual(cs.generation, "2023")
|
self.assertEqual(cs.generation, "2023")
|
||||||
self.assertEqual(cs.region, "Deutschschweiz")
|
self.assertEqual(cs.region, "Aargau")
|
||||||
self.assertEqual(cs.group, "A")
|
self.assertEqual(cs.group, "A")
|
||||||
|
|
||||||
attendance_course = CourseSessionAttendanceCourse.objects.first()
|
attendance_course = CourseSessionAttendanceCourse.objects.first()
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
attendance_course.due_date.start.isoformat(), "2023-06-06T11:30:00+00:00"
|
attendance_course.due_date.start.isoformat(), "2023-06-06T12:30:00+00:00"
|
||||||
)
|
)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
attendance_course.due_date.end.isoformat(), "2023-06-06T13:00:00+00:00"
|
attendance_course.due_date.end.isoformat(), "2023-06-06T15:00:00+00:00"
|
||||||
)
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
f"E666, HKV Aarau2, Bahnhofstrasse 460, 5002, Aarau",
|
||||||
|
attendance_course.location,
|
||||||
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
f"{trainer1.first_name} {trainer1.last_name}", attendance_course.trainer
|
||||||
|
)
|
||||||
|
self.assertEqual(4, DueDate.objects.count())
|
||||||
|
|
||||||
def test_import_course_session_twice(self):
|
def test_import_course_session_twice(self):
|
||||||
"""
|
"""
|
||||||
|
|
@ -129,19 +170,19 @@ class CreateOrUpdateCourseSessionTestCase(TestCase):
|
||||||
`CourseSessionAttendanceCourse` only once
|
`CourseSessionAttendanceCourse` only once
|
||||||
"""
|
"""
|
||||||
row = [
|
row = [
|
||||||
("ID", "DE 2023 A"),
|
("ID", "AG 2023 A"),
|
||||||
("Generation", 2023),
|
("Generation", 2023),
|
||||||
("Region", "Deutschschweiz"),
|
("Region", "Aargau"),
|
||||||
("Sprache", "de"),
|
("Sprache", "de"),
|
||||||
("Klasse", "A"),
|
("Klasse", "A"),
|
||||||
("Fahrzeug Start", "06.06.2023, 13:30"),
|
("Fahrzeug Start", "06.06.2023, 13:30"),
|
||||||
("Fahrzeug Ende", "06.06.2023, 15:00"),
|
("Fahrzeug Ende", "06.06.2023, 15:00"),
|
||||||
(
|
(
|
||||||
"Fahrzeug Raum",
|
"Fahrzeug Raum",
|
||||||
"https://teams.microsoft.com/l/meetup-join/19%3ameeting_N2I5YzViZTQtYTM2Ny00OTYwLTgzNzAtYWI4OTQzODcxNTlj%40thread.v2/0?context=%7b%22Tid%22%3a%22fedd03c8-a756-4803-8f27-0db8f7c488f2%22%2c%22Oid%22%3a%22f92e6382-3884-4e71-a2fd-b305a75d9812%22%7d",
|
"E64",
|
||||||
),
|
),
|
||||||
("Fahrzeug Standort", None),
|
("Fahrzeug Standort", "HKV Aarau"),
|
||||||
("Fahrzeug Adresse", None),
|
("Fahrzeug Adresse", "Bahnhofstrasse 460, 5001, Aarau"),
|
||||||
]
|
]
|
||||||
|
|
||||||
data = dict(row)
|
data = dict(row)
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ class CreateOrUpdateTrainerTestCase(TestCase):
|
||||||
import_id="DE 2023 A",
|
import_id="DE 2023 A",
|
||||||
group="A",
|
group="A",
|
||||||
)
|
)
|
||||||
self.course_session_a = CourseSession.objects.create(
|
self.course_session_b = CourseSession.objects.create(
|
||||||
course=self.course,
|
course=self.course,
|
||||||
title="Deutschschweiz 2023 B",
|
title="Deutschschweiz 2023 B",
|
||||||
import_id="DE 2023 B",
|
import_id="DE 2023 B",
|
||||||
|
|
@ -96,3 +96,36 @@ class CreateOrUpdateTrainerTestCase(TestCase):
|
||||||
self.assertEqual(csu.role, CourseSessionUser.Role.EXPERT)
|
self.assertEqual(csu.role, CourseSessionUser.Role.EXPERT)
|
||||||
self.assertEqual(csu.user.email, "fabienne.haenni@vbv-afa.ch")
|
self.assertEqual(csu.user.email, "fabienne.haenni@vbv-afa.ch")
|
||||||
self.assertEqual(csu.expert.all().first().title, "Fahrzeug")
|
self.assertEqual(csu.expert.all().first().title, "Fahrzeug")
|
||||||
|
|
||||||
|
def test_update_trainer(self):
|
||||||
|
row = [
|
||||||
|
("Name", "Hänni"),
|
||||||
|
("Vorname", "Fabienne"),
|
||||||
|
("Email", "fabienne.haenni@vbv-afa.ch"),
|
||||||
|
("Sprache", "de"),
|
||||||
|
("Generation", "DE 2023"),
|
||||||
|
("Klasse", "A"),
|
||||||
|
("Circles", "Fahrzeug, Haushalt Teil 1"),
|
||||||
|
]
|
||||||
|
|
||||||
|
create_or_update_trainer(self.course, dict(row))
|
||||||
|
|
||||||
|
update_row = [
|
||||||
|
("Name", "Meier"),
|
||||||
|
("Vorname", "Fabienne"),
|
||||||
|
("Email", "fabienne.haenni@vbv-afa.ch"),
|
||||||
|
("Sprache", "de"),
|
||||||
|
("Generation", "DE 2023"),
|
||||||
|
("Klasse", "A"),
|
||||||
|
("Circles", "Fahrzeug, Haushalt Teil 1"),
|
||||||
|
]
|
||||||
|
|
||||||
|
create_or_update_trainer(self.course, dict(update_row))
|
||||||
|
|
||||||
|
csu = CourseSessionUser.objects.all().first()
|
||||||
|
|
||||||
|
self.assertEqual(csu.course_session, self.course_session_a)
|
||||||
|
self.assertEqual(csu.role, CourseSessionUser.Role.EXPERT)
|
||||||
|
self.assertEqual(csu.user.email, "fabienne.haenni@vbv-afa.ch")
|
||||||
|
self.assertEqual(csu.expert.all().first().title, "Fahrzeug")
|
||||||
|
self.assertEqual(csu.user.last_name, "Meier")
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue