예제 #1
0
    def test_serialize_after_finish(self):
        """
        Tests serializing a job's state to a RunningJob instance.
        """
        task_name = 'task-1'
        state = JobState(task_name)
        state.save_state()
        expected_events = [
            {
                'name': 'event-1',
                'arguments': ['a', 'b'],
            },
            {
                'name': 'event-2',
                'arguments': None,
            }
        ]
        mock_task = self.create_mock_task(task_name, expected_events)

        state.add_processed_task(mock_task)
        state.save_state()
        state.mark_as_complete()

        # Stil only one running job instance
        self.assertEqual(RunningJob.objects.count(), 1)
        job = RunningJob.objects.all()[0]
        self.assertSequenceEqual(job.state['events'], expected_events)
        self.assertSequenceEqual(job.state['processed_tasks'], [task_name])
        self.assertTrue(job.is_complete)