From 4bf6d863d05eeac52fe72290a1c2aa4dc0c4b274 Mon Sep 17 00:00:00 2001 From: Todd Dembrey <todd.dembrey@torchbox.com> Date: Tue, 19 Dec 2017 12:38:56 +0000 Subject: [PATCH] Add tests for the next phase action --- opentech/apply/tests/factories.py | 3 +++ opentech/apply/tests/test_workflow.py | 21 ++++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/opentech/apply/tests/factories.py b/opentech/apply/tests/factories.py index cbaf9722b..ccd012e5e 100644 --- a/opentech/apply/tests/factories.py +++ b/opentech/apply/tests/factories.py @@ -42,6 +42,9 @@ class PhaseFactory(factory.Factory): name = factory.Faker('word') actions = ListSubFactory(ActionFactory, count=factory.SelfAttribute('num_actions')) + stage = factory.PostGeneration( + lambda obj, create, extracted, **kwargs: StageFactory.build(phases=[obj]) + ) @classmethod def _create(cls, model_class, *args, **kwargs): diff --git a/opentech/apply/tests/test_workflow.py b/opentech/apply/tests/test_workflow.py index 2186455e0..c239f7cc4 100644 --- a/opentech/apply/tests/test_workflow.py +++ b/opentech/apply/tests/test_workflow.py @@ -1,7 +1,14 @@ from django.test import SimpleTestCase from django.forms import Form -from opentech.apply.workflow import Action, Phase, Stage, Workflow +from opentech.apply.workflow import ( + Action, + ChangePhaseAction, + NextPhaseAction, + Phase, + Stage, + Workflow, +) from .factories import ActionFactory, PhaseFactory, StageFactory, WorkflowFactory @@ -100,3 +107,15 @@ class TestActions(SimpleTestCase): action = ActionFactory() with self.assertRaises(NotImplementedError): action.process('') + + +class TestCustomActions(SimpleTestCase): + def test_next_phase_action_returns_none_if_no_next(self): + action = NextPhaseAction('the next!') + phase = PhaseFactory(actions=[action]) + self.assertEqual(phase.process(action.name), None) + + def test_next_phase_action_returns_next_phase(self): + action = NextPhaseAction('the next!') + stage = StageFactory.build(num_phases=2, phases__actions=[action]) + self.assertEqual(stage.phases[0].process(action.name), stage.phases[1]) -- GitLab