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