forked from rc/aircox
73 lines
1.5 KiB
Python
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
|
|
]
|