Пример #1
0
    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)
Пример #2
0
 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
Пример #3
0
    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)