forked from rc/aircox
		
	changes
This commit is contained in:
		@ -1,3 +1,81 @@
 | 
			
		||||
from django.test import TestCase
 | 
			
		||||
import datetime
 | 
			
		||||
 | 
			
		||||
from django.test import TestCase
 | 
			
		||||
from django.utils import timezone as tz
 | 
			
		||||
 | 
			
		||||
from aircox_programs.models import *
 | 
			
		||||
 | 
			
		||||
class Programs (TestCase):
 | 
			
		||||
    def setUp (self):
 | 
			
		||||
        stream = Stream.objects.get_or_create(
 | 
			
		||||
            name = 'diffusions',
 | 
			
		||||
            defaults = { 'type': Stream.Type['schedule'] }
 | 
			
		||||
        )[0]
 | 
			
		||||
        Program.objects.create(name = 'source', stream = stream)
 | 
			
		||||
        Program.objects.create(name = 'microouvert', stream = stream)
 | 
			
		||||
        #Stream.objects.create(name = 'bns', type = Stream.Type['random'], priority = 1)
 | 
			
		||||
        #Stream.objects.create(name = 'jingle', type = Stream.Type['random'] priority = 2)
 | 
			
		||||
        #Stream.objects.create(name = 'loves', type = Stream.Type['random'], priority = 3)
 | 
			
		||||
        pass
 | 
			
		||||
 | 
			
		||||
    def test_programs_schedules (self):
 | 
			
		||||
        program = Program.objects.get(name = 'source')
 | 
			
		||||
 | 
			
		||||
        sched_0 = self.create_schedule(program, 'one on two', [
 | 
			
		||||
                tz.datetime(2015, 10, 2, 18),
 | 
			
		||||
                tz.datetime(2015, 10, 16, 18),
 | 
			
		||||
                tz.datetime(2015, 10, 30, 18),
 | 
			
		||||
            ]
 | 
			
		||||
        )
 | 
			
		||||
        sched_1 = self.create_schedule(program, 'one on two', [
 | 
			
		||||
                tz.datetime(2015, 10, 5, 18),
 | 
			
		||||
                tz.datetime(2015, 10, 19, 18),
 | 
			
		||||
            ],
 | 
			
		||||
            rerun = sched_0
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        program = Program.objects.get(name = 'microouvert')
 | 
			
		||||
        # special case with november first week starting on sunday
 | 
			
		||||
        sched_2 = self.create_schedule(program, 'first and third', [
 | 
			
		||||
                tz.datetime(2015, 11, 6, 18),
 | 
			
		||||
                tz.datetime(2015, 11, 20, 18),
 | 
			
		||||
            ],
 | 
			
		||||
            date = tz.datetime(2015, 10, 23, 18),
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
    def create_schedule (self, program, frequency, dates, date = None, rerun = None):
 | 
			
		||||
        frequency = Schedule.Frequency[frequency]
 | 
			
		||||
        schedule = Schedule(
 | 
			
		||||
            program = program,
 | 
			
		||||
            frequency = frequency,
 | 
			
		||||
            date = date or dates[0],
 | 
			
		||||
            rerun = rerun,
 | 
			
		||||
            duration = datetime.time(1, 30)
 | 
			
		||||
        )
 | 
			
		||||
        print(schedule.__dict__)
 | 
			
		||||
        schedule.save()
 | 
			
		||||
 | 
			
		||||
        self.check_schedule(schedule, dates)
 | 
			
		||||
        return schedule
 | 
			
		||||
 | 
			
		||||
    def check_schedule (self, schedule, dates):
 | 
			
		||||
        dates = [ tz.make_aware(date) for date in dates ]
 | 
			
		||||
        dates.sort()
 | 
			
		||||
 | 
			
		||||
        # match date and weeks
 | 
			
		||||
        for date in dates:
 | 
			
		||||
            #self.assertTrue(schedule.match(date, check_time = False))
 | 
			
		||||
            #self.assertTrue(schedule.match_week(date))
 | 
			
		||||
 | 
			
		||||
        # dates
 | 
			
		||||
        dates_ = schedule.dates_of_month(dates[0])
 | 
			
		||||
        dates_.sort()
 | 
			
		||||
        self.assertEqual(dates_, dates)
 | 
			
		||||
 | 
			
		||||
        # diffusions
 | 
			
		||||
        dates_ = schedule.diffusions_of_month(dates[0])
 | 
			
		||||
        dates_ = [date_.date for date_ in dates_]
 | 
			
		||||
        dates_.sort()
 | 
			
		||||
        self.assertEqual(dates_, dates)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Create your tests here.
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user