aircox-radiocampus/aircox/tests/conftest.py
Thomas Kairos cd19c26e82 #93: reorganise Rerun, Diffusion, Schedule module (#95)
#93

Co-authored-by: bkfox <thomas bkfox net>
Reviewed-on: rc/aircox#95
2023-04-02 20:37:47 +02:00

73 lines
1.5 KiB
Python

from datetime import time, timedelta
import itertools
import pytest
from model_bakery import baker
from aircox import models
@pytest.fixture
def stations():
return baker.make("aircox.station", _quantity=2)
@pytest.fixture
def programs(stations):
items = list(
itertools.chain(
*(
baker.make("aircox.program", station=station, _quantity=3)
for station in stations
)
)
)
for item in items:
item.save()
return items
@pytest.fixture
def sched_initials(programs):
# use concrete class; timezone is provided in order to ensure DST
items = [
baker.prepare(
"aircox.schedule",
program=program,
time=time(16, 00),
timezone="Europe/Brussels",
)
for program in programs
]
models.Schedule.objects.bulk_create(items)
return items
@pytest.fixture
def sched_reruns(sched_initials):
# use concrete class
items = [
baker.prepare(
"aircox.schedule",
initial=initial,
program=initial.program,
date=initial.date,
time=(initial.start + timedelta(hours=1)).time(),
)
for initial in sched_initials
]
models.Schedule.objects.bulk_create(items)
return items
@pytest.fixture
def schedules(sched_initials, sched_reruns):
return sched_initials + sched_reruns
@pytest.fixture
def episodes(programs):
return [
baker.make("aircox.episode", parent=program) for program in programs
]