forked from rc/aircox

- Add configuration files for packaging - Precommit now uses ruff Co-authored-by: bkfox <thomas bkfox net> Reviewed-on: rc/aircox#127
48 lines
1.5 KiB
Python
48 lines
1.5 KiB
Python
from datetime import date, datetime, timedelta, time
|
|
from django.utils import timezone as tz
|
|
|
|
import pytest
|
|
|
|
from aircox import models
|
|
from aircox.controllers import diffusion_monitor
|
|
|
|
now = date.today()
|
|
|
|
|
|
@pytest.fixture
|
|
def monitor(logger):
|
|
logger = logger._imeta.clone().inject(diffusion_monitor, "logger")
|
|
yield diffusion_monitor.DiffusionMonitor(date=now)
|
|
logger.release()
|
|
|
|
|
|
class TestDiffusion:
|
|
@pytest.mark.django_db
|
|
def test_update(self, monitor, schedules, sched_initials, logger):
|
|
monitor.update()
|
|
|
|
diffusions = models.Diffusion.objects.filter(schedule__in=sched_initials)
|
|
by_date = {}
|
|
for diff in diffusions:
|
|
assert diff.episode_id
|
|
by_date.setdefault(diff.schedule_id, set()).add((diff.start, diff.end))
|
|
|
|
for schedule in sched_initials:
|
|
if schedule.pk not in by_date:
|
|
continue
|
|
_, items = schedule.diffusions_of_month(now)
|
|
assert all((item.start, item.end) in by_date[schedule.pk] for item in items)
|
|
|
|
@pytest.mark.django_db
|
|
def test_clean(self, monitor, episode):
|
|
start = tz.make_aware(datetime.combine(monitor.date - timedelta(days=1), time(10, 20)))
|
|
diff = models.Diffusion(
|
|
type=models.Diffusion.TYPE_UNCONFIRMED,
|
|
episode=episode,
|
|
start=start,
|
|
end=start + timedelta(minutes=30),
|
|
)
|
|
diff.save()
|
|
monitor.clean()
|
|
assert not models.Diffusion.objects.filter(pk=diff.pk).first()
|