Skip to content
Snippets Groups Projects
test_workflow.py 1.88 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 Phase, Stage, Workflow
    
    Todd Dembrey's avatar
    Todd Dembrey committed
    from .factories import 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_can_iterate_through_workflow(self):
    
            stages = StageFactory.create_batch(2)
    
            workflow = Workflow('two_stage', stages)
    
            for stage, check in zip(workflow, stages):
    
                self.assertEqual(stage, check)
    
    
        def test_returns_first_stage_if_no_arg(self):
            workflow = WorkflowFactory(num_stages=1)
            self.assertEqual(workflow.next(), workflow.stages[0])
    
        def test_returns_none_if_no_next(self):
            workflow = WorkflowFactory(num_stages=1)
            self.assertEqual(workflow.next(workflow.stages[0]), None)
    
    
        def test_returns_next_stage(self):
            workflow = WorkflowFactory(num_stages=2)
            self.assertEqual(workflow.next(workflow.stages[0]), workflow.stages[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):
                self.assertEqual(phase, check)
    
    
    Todd Dembrey's avatar
    Todd Dembrey committed
    
    class TestPhaseCreation(SimpleTestCase):
        def test_can_create_phase(self):
            name = 'the_phase'
            phase = Phase(name)
            self.assertEqual(phase.name, name)