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