from django.test import SimpleTestCase from django.forms import Form from opentech.apply.workflow import Stage, Workflow from .factories import StageFactory, WorkflowFactory class TestWorkflowCreation(SimpleTestCase): def test_can_create_workflow(self): name = 'single_stage' stage = StageFactory() workflow = Workflow(name, [stage]) self.assertEqual(workflow.name, name) self.assertCountEqual(workflow.stages, [stage]) def test_can_iterate_through_workflow(self): stages = StageFactory.create_batch(2) workflow = Workflow('two_stage', stages) for stage, check in zip(workflow, stages): self.assertEqual(stage, check) def test_returns_first_stage_if_no_arg(self): workflow = WorkflowFactory(num_stages=1) self.assertEqual(workflow.next(), workflow.stages[0]) def test_returns_none_if_no_next(self): workflow = WorkflowFactory(num_stages=1) self.assertEqual(workflow.next(workflow.stages[0]), None) def test_returns_next_stage(self): workflow = WorkflowFactory(num_stages=2) self.assertEqual(workflow.next(workflow.stages[0]), workflow.stages[1]) class TestStageCreation(SimpleTestCase): def test_can_create_stage(self): name = 'the_stage' form = Form() stage = Stage(name, form) self.assertEqual(stage.name, name) self.assertEqual(stage.form, form)