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 ]