예제 #1
0
    def test_deserialize(self):
        """
        Tests deserializing a RunningJob instance to a JobState.
        """
        initial_task_name = 'initial-task'
        additional_parameters = {
            'param1': 1
        }
        job = RunningJob.objects.create(
            initial_task_name=initial_task_name,
            additional_parameters=additional_parameters)
        processed_tasks = ['initial-task', 'task-1']
        job.state = {
            'events': [
                {
                    'name': 'event-1',
                },
                {
                    'name': 'event-2',
                    'arguments': {
                        'a': 1,
                        'b': '2'
                    }
                }
            ],
            'processed_tasks': processed_tasks
        }
        job.save()

        state = JobState.deserialize_running_job_state(job)

        self.assertEqual(state.initial_task_name, 'initial-task')
        self.assertEqual(state.additional_parameters, additional_parameters)
        self.assertEqual(state.processed_tasks, processed_tasks)

        self.assertEqual(len(state.events), 2)
        self.assertEqual(state.events[0].name, 'event-1')
        self.assertIsNone(state.events[0].arguments)
        self.assertEqual(state.events[1].arguments, {
            'a': 1,
            'b': '2'
        })
        self.assertEqual(state._running_job, job)