diff --git a/opentech/apply/tests/factories.py b/opentech/apply/tests/factories.py index 91840560284b2fde4e11be9b667868ba07a0f64a..c98bd05c71ffb6461bbb4d681e4bf19e0b4afe67 100644 --- a/opentech/apply/tests/factories.py +++ b/opentech/apply/tests/factories.py @@ -1,15 +1,27 @@ from django.forms import Form import factory -from opentech.apply.workflow import Stage, Workflow +from opentech.apply.workflow import Phase, Stage, Workflow + + +class PhaseFactory(factory.Factory): + class Meta: + model = Phase + + name = factory.Faker('word') class StageFactory(factory.Factory): class Meta: model = Stage + inline_args = ('name', 'form', 'phases',) + + class Params: + num_phases = factory.Faker('random_int', min=1, max=3) name = factory.Faker('word') form = factory.LazyFunction(Form) + phases = factory.LazyAttribute(lambda o: [PhaseFactory() for _ in range(o.num_phases)]) class WorkflowFactory(factory.Factory): diff --git a/opentech/apply/tests/test_workflow.py b/opentech/apply/tests/test_workflow.py index 45c152052f660579455176d4becfcba9dd97691c..72f9ad0fcf2937dca727ee51c4f193406f527231 100644 --- a/opentech/apply/tests/test_workflow.py +++ b/opentech/apply/tests/test_workflow.py @@ -3,7 +3,7 @@ from django.forms import Form from opentech.apply.workflow import Phase, Stage, Workflow -from .factories import StageFactory, WorkflowFactory +from .factories import PhaseFactory, StageFactory, WorkflowFactory class TestWorkflowCreation(SimpleTestCase): @@ -37,9 +37,11 @@ class TestStageCreation(SimpleTestCase): def test_can_create_stage(self): name = 'the_stage' form = Form() - stage = Stage(name, form) + phases = PhaseFactory.create_batch(2) + stage = Stage(name, form, phases) self.assertEqual(stage.name, name) self.assertEqual(stage.form, form) + self.assertEqual(stage.phases, phases) class TestPhaseCreation(SimpleTestCase): diff --git a/opentech/apply/workflow.py b/opentech/apply/workflow.py index 521f1b5f2a1afccc01f116c71b50351ddb2106a6..882208b35b5e4d5a275ccc59e927808b33688e94 100644 --- a/opentech/apply/workflow.py +++ b/opentech/apply/workflow.py @@ -26,9 +26,10 @@ class Workflow(Iterable['Stage']): class Stage: - def __init__(self, name: str, form: Form) -> None: + def __init__(self, name: str, form: Form, phases: Sequence['Phase']) -> None: self.name = name self.form = form + self.phases = phases class Phase: