class PipeLineTestCase(unittest.TestCase): def setUp(self): def square_job(context): value = context.number context.number = value * value def double_job(context): value = context.number context.number = 2 * value self.square_job = square_job self.double_job = double_job self.pipeline_name = 'square pipeline' self.pipeline = PipeLine(self.pipeline_name) self.context = Context(get_data_path('config.yml', DATA_DIR)) self.context.number = 2 def test_run_jobs(self): self.pipeline.add_job(self.square_job) self.pipeline.add_job(self.double_job) self.pipeline.run(self.context) self.assertEqual(8, self.context.number) # Change jobs order self.pipeline.jobs.reverse() # Reset context to a base value self.context.number = 2 self.pipeline.run(self.context) self.assertEqual(16, self.context.number)
def test_workflow_execute_pipelines(self): context = Context() context.config['apply_processing_jobs'] = True context.sm_definitions = None pipeline_preprocessing = PipeLine(None) pipeline_preprocessing.run = Mock() pipeline_processing = PipeLine(None) pipeline_processing.run = Mock() workflow = Workflow(pipeline_preprocessing, pipeline_processing) # Mocking a generator method sm_filter = MagicMock() sm_filter.filter_eqs.return_value.__iter__.return_value = \ iter([(dict(a=1), [1]), ((dict(b=2), [2]))]) workflow.start(context, sm_filter) self.assertTrue(workflow.preprocessing_pipeline.run.called) self.assertTrue(sm_filter.filter_eqs.called) self.assertTrue(pipeline_processing.run.called) self.assertEqual(2, pipeline_processing.run.call_count)