Skip to content
Snippets Groups Projects
test_workflow.py 2.33 KiB
Newer Older
  • Learn to ignore specific revisions
  • from django.test import SimpleTestCase
    
    Todd Dembrey's avatar
    Todd Dembrey committed
    from django.forms import Form
    
    Todd Dembrey's avatar
    Todd Dembrey committed
    
    
    Todd Dembrey's avatar
    Todd Dembrey committed
    from opentech.apply.workflow import Action, Phase, Stage, Workflow
    
    from .factories import ActionFactory, PhaseFactory, 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_returns_first_phase_if_no_arg(self):
            workflow = WorkflowFactory(num_stages=1, stages__num_phases=1)
            self.assertEqual(workflow.next(), workflow.stages[0].phases[0])
    
        def test_returns_none_if_no_next(self):
    
            workflow = WorkflowFactory(num_stages=1, stages__num_phases=1)
            self.assertEqual(workflow.next(workflow.stages[0].phases[0]), None)
    
        def test_returns_next_phase(self):
            workflow = WorkflowFactory(num_stages=2, stages__num_phases=1)
            self.assertEqual(workflow.next(workflow.stages[0].phases[0]), workflow.stages[1].phases[0])
    
        def test_returns_next_phase_shared_name(self):
            workflow = WorkflowFactory(num_stages=1, stages__num_phases=3, stages__phases__name='the_same')
            self.assertEqual(workflow.next(workflow.stages[0].phases[0]), workflow.stages[0].phases[1])
    
    
    class TestStageCreation(SimpleTestCase):
        def test_can_create_stage(self):
            name = 'the_stage'
    
    Todd Dembrey's avatar
    Todd Dembrey committed
            form = Form()
    
    Todd Dembrey's avatar
    Todd Dembrey committed
            phases = PhaseFactory.create_batch(2)
            stage = Stage(name, form, phases)
    
            self.assertEqual(stage.name, name)
    
    Todd Dembrey's avatar
    Todd Dembrey committed
            self.assertEqual(stage.form, form)
    
    Todd Dembrey's avatar
    Todd Dembrey committed
            self.assertEqual(stage.phases, phases)
    
        def test_can_iterate_through_phases(self):
            stage = StageFactory()
    
            for phase, check in zip(stage, stage.phases):  # type: ignore # spurious error
    
                self.assertEqual(phase, check)
    
    
    Todd Dembrey's avatar
    Todd Dembrey committed
    
    class TestPhaseCreation(SimpleTestCase):
        def test_can_create_phase(self):
    
            actions = ActionFactory.create_batch(2)
    
    Todd Dembrey's avatar
    Todd Dembrey committed
            name = 'the_phase'
    
            phase = Phase(name, actions)
    
    Todd Dembrey's avatar
    Todd Dembrey committed
            self.assertEqual(phase.name, name)
    
            self.assertEqual(phase.actions, actions)
    
    Todd Dembrey's avatar
    Todd Dembrey committed
    
    
    class TestActions(SimpleTestCase):
        def test_can_create_action(self):
            name = 'action stations'
            action = Action(name)
            self.assertEqual(action.name, name)