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