class TestScheduleJob(TestCase): def setUp(self): self.task = Task(ModelStub()) def test_schedule_job_with_scheduled_time(self): # Arrange scheduled_time = datetime.now() # Ack self.task.schedule(scheduled_time) # Assert self.assertEqual(scheduled_time, self.task.scheduled)
class ScheduleJob(object): def __init__(self, time_to_execute, job, function, args = [], kwargs = {}): # pre conditions here self.function = function self.args = args self.kwargs = kwargs self.time_to_execute = time_to_execute # assign roles self.job = Task(job) def __enter__(self): self.job.set_call(self.function, *self.args, **self.kwargs) if self.time_to_execute: self.job.schedule(self.time_to_execute) return self def __exit__(self, type, value, traceback): Task.revoke(self.job) self.job.save()