def test_recorder_scheduleRecordings(self): scheduler = Mock(BlockingScheduler) scheduler.get_jobs.return_value = [] hdhomerun = Mock(HDHomeRunInterface) db = Mock(CarbonDVRDatabase) db.getPendingRecordings.return_value = [] recorder = Recorder(scheduler, hdhomerun, db, 'recs', 'logs') recorder.logger = Mock() recorder.scheduler = Mock() recorder.removeAllRecordingJobs = Mock() # given: a set of pending recordings mockPendingRecordings = [ Bunch(channelMajor=1, channelMinor=2, startTime=datetime(2000,1,1,12,00,00, tzinfo=pytz.timezone('US/Central'))), Bunch(channelMajor=19, channelMinor=3, startTime=datetime(2000,1,1,13,00,00, tzinfo=pytz.timezone('US/Central'))), Bunch(channelMajor=38, channelMinor=1, startTime=datetime(2000,1,1,14,00,00, tzinfo=pytz.timezone('US/Central'))) ] db.getPendingRecordings.reset_mock() db.getPendingRecordings.return_value = mockPendingRecordings # when: scheduleRecordings recorder.scheduleRecordings() # then: all existing recording jobs cleared, getPendingRecordings is called, new recording jobs are added recorder.removeAllRecordingJobs.assert_called_once() db.getPendingRecordings.assert_called_once_with(timedelta(hours=12)) self.assertEqual(3, recorder.scheduler.add_job.call_count) call0 = call(recorder.record, args=[mockPendingRecordings[0]], trigger='date', run_date=mockPendingRecordings[0].startTime, misfire_grace_time=60) self.assertEqual(recorder.scheduler.add_job.call_args_list[0], call0) call1 = call(recorder.record, args=[mockPendingRecordings[1]], trigger='date', run_date=mockPendingRecordings[1].startTime, misfire_grace_time=60) self.assertEqual(recorder.scheduler.add_job.call_args_list[1], call1) call2 = call(recorder.record, args=[mockPendingRecordings[2]], trigger='date', run_date=mockPendingRecordings[2].startTime, misfire_grace_time=60) self.assertEqual(recorder.scheduler.add_job.call_args_list[2], call2)
def test_recorder_removeAllRecordingJobs(self): scheduler = Mock(BlockingScheduler) scheduler.get_jobs.return_value = [] hdhomerun = Mock(HDHomeRunInterface) db = Mock(CarbonDVRDatabase) db.getPendingRecordings.return_value = [] recorder = Recorder(scheduler, hdhomerun, db, 'recs', 'logs') recorder.logger = Mock() recorder.scheduler = Mock() # given: a mix of recording jobs and non-recording jobs recorder.scheduler.get_jobs.return_value = [ Bunch(func=recorder.record, id=3), Bunch(func=recorder.scheduleRecordings, id=1), Bunch(func=recorder.record, id=4) ] # when: removeAllRecordingJobs recorder.removeAllRecordingJobs() # then: all recording jobs removed, non-recording jobs ignored self.assertEqual(2, recorder.scheduler.remove_job.call_count) self.assertEqual(recorder.scheduler.remove_job.call_args_list[0], call(3)) self.assertEqual(recorder.scheduler.remove_job.call_args_list[1], call(4))
def test_recorder_scheduleRecordings(self): scheduler = Mock(BlockingScheduler) scheduler.get_jobs.return_value = [] hdhomerun = Mock(HDHomeRunInterface) db = Mock(CarbonDVRDatabase) db.getPendingRecordings.return_value = [] recorder = Recorder(scheduler, hdhomerun, db, 'recs', 'logs') recorder.logger = Mock() recorder.scheduler = Mock() recorder.removeAllRecordingJobs = Mock() # given: a set of pending recordings mockPendingRecordings = [ Bunch(channelMajor=1, channelMinor=2, startTime=datetime(2000, 1, 1, 12, 00, 00, tzinfo=pytz.timezone('US/Central'))), Bunch(channelMajor=19, channelMinor=3, startTime=datetime(2000, 1, 1, 13, 00, 00, tzinfo=pytz.timezone('US/Central'))), Bunch(channelMajor=38, channelMinor=1, startTime=datetime(2000, 1, 1, 14, 00, 00, tzinfo=pytz.timezone('US/Central'))) ] db.getPendingRecordings.reset_mock() db.getPendingRecordings.return_value = mockPendingRecordings # when: scheduleRecordings recorder.scheduleRecordings() # then: all existing recording jobs cleared, getPendingRecordings is called, new recording jobs are added recorder.removeAllRecordingJobs.assert_called_once() db.getPendingRecordings.assert_called_once_with(timedelta(hours=12)) self.assertEqual(3, recorder.scheduler.add_job.call_count) call0 = call(recorder.record, args=[mockPendingRecordings[0]], trigger='date', run_date=mockPendingRecordings[0].startTime, misfire_grace_time=60) self.assertEqual(recorder.scheduler.add_job.call_args_list[0], call0) call1 = call(recorder.record, args=[mockPendingRecordings[1]], trigger='date', run_date=mockPendingRecordings[1].startTime, misfire_grace_time=60) self.assertEqual(recorder.scheduler.add_job.call_args_list[1], call1) call2 = call(recorder.record, args=[mockPendingRecordings[2]], trigger='date', run_date=mockPendingRecordings[2].startTime, misfire_grace_time=60) self.assertEqual(recorder.scheduler.add_job.call_args_list[2], call2)