aircox/aircox/tests/controllers/test_diffusion_monitor.py
Thomas Kairos f7a61fe6c0 Feat: packaging (#127)
- Add configuration files for packaging
- Precommit now uses ruff

Co-authored-by: bkfox <thomas bkfox net>
Reviewed-on: #127
2023-10-11 10:58:34 +02:00

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()