From 14325fe2ffb79ea7f13c49aa9ecb9e23d1b31bfd Mon Sep 17 00:00:00 2001 From: Todd Dembrey <todd.dembrey@torchbox.com> Date: Thu, 14 Dec 2017 09:32:50 +0000 Subject: [PATCH] Relate phases to stage --- opentech/apply/tests/factories.py | 14 +++++++++++++- opentech/apply/tests/test_workflow.py | 6 ++++-- opentech/apply/workflow.py | 3 ++- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/opentech/apply/tests/factories.py b/opentech/apply/tests/factories.py index 918405602..c98bd05c7 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 45c152052..72f9ad0fc 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 521f1b5f2..882208b35 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: -- GitLab