def test_preview_scheduled_job(self): # prepare fake data self.prepare_data() # schedule a real job (NewInstructorAction) action = NewInstructorAction( trigger=self.trigger, objects=dict(event=self.event, task=self.task), ) # it's important to call `action._email()`, because it prepares # `action.context` email = action._email() job = self.scheduler.enqueue_in(timedelta(minutes=10), action) rqjob = RQJob.objects.create(job_id=job.id, trigger=self.trigger) scheduled = scheduled_execution_time(job.id, scheduler=self.scheduler) # log admin user self._logSuperuserIn() url = reverse("admin:autoemails_rqjob_preview", args=[rqjob.pk]) rv = self.client.get(url) self.assertEqual(rv.status_code, 200) # We can fetch the Job, it's coming from NewInstructorAction.__call__ self.assertEqual(rv.context["rqjob"], rqjob) self.assertEqual(rv.context["job"], job) self.assertEqual(rv.context["job_scheduled"], scheduled) self.assertEqual(rv.context["instance"], action) self.assertEqual(rv.context["trigger"], self.trigger) self.assertEqual(rv.context["template"], self.trigger.template) # can't compare emails directly, __eq__ is not implemented self.assertTrue(compare_emails(rv.context["email"], email)) self.assertEqual(rv.context["adn_context"], action.context)
def __eq__(self, b): try: return (self.trigger == b.trigger and self.template == b.template and self.context_objects == b.context_objects and self.context == b.context and compare_emails(self.email, b.email) and self.get_launch_at() == b.get_launch_at()) except AttributeError: return False
def test_preview_invoked_job(self): # prepare fake data self.prepare_data() # schedule a real job (NewInstructorAction) action = NewInstructorAction( trigger=self.trigger, objects=dict(event=self.event, task=self.task), ) # it's important to call `action._email()`, because it prepares # `action.context` email = action._email() # some cheating, normally the `action.email` is implemented in # `__call__` action.email = email job = self.scheduler.enqueue_in(timedelta(minutes=10), action) rqjob = RQJob.objects.create(job_id=job.id, trigger=self.trigger) # Speed up the job! Enqueue and run immediately. self.scheduler.enqueue_job(job) scheduled = scheduled_execution_time(job.id, scheduler=self.scheduler) # log admin user self._logSuperuserIn() url = reverse('admin:autoemails_rqjob_preview', args=[rqjob.pk]) rv = self.client.get(url) self.assertEqual(rv.status_code, 200) # We can fetch the Job, it's coming from NewInstructorAction.__call__ self.assertEqual(rv.context['rqjob'], rqjob) self.assertEqual(rv.context['job'], job) self.assertEqual(rv.context['job_scheduled'], scheduled) self.assertEqual(rv.context['instance'], action) self.assertEqual(rv.context['trigger'], self.trigger) self.assertEqual(rv.context['template'], self.trigger.template) # can't compare emails directly, __eq__ is not implemented self.assertTrue(compare_emails(rv.context['email'], email)) self.assertEqual(rv.context['adn_context'], action.context)