forked from rc/aircox
feat: add error message page; improve admin ui; add missing test files
This commit is contained in:
56
aircox/tests/controllers/test_diffusion_monitor.py
Normal file
56
aircox/tests/controllers/test_diffusion_monitor.py
Normal file
@ -0,0 +1,56 @@
|
||||
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()
|
Reference in New Issue
Block a user