def test_unknown_state_type(self): workflow = Workflow.loadFromFile( 'tests/resources/unknown_type_workflow.json') if ispython3: with self.assertRaisesRegex(RuntimeError, "Unknown state type .*"): workflow.run() else: with self.assertRaisesRegexp(RuntimeError, "Unknown state type .*"): workflow.run()
def test_no_run_method(self): workflow = Workflow.loadFromFile( "tests/resources/no_run_method_state_workflow.json") if ispython3: with self.assertRaisesRegex(RuntimeError, "run function not implemented"): workflow.run() else: with self.assertRaisesRegexp(RuntimeError, "run function not implemented"): workflow.run()
def test_trigger_recursive_empty(self): workflow = Workflow.loadFromFile( 'tests/resources/trigger_recursive_variable_none_workflow.json') workflow.variables['recursive'] = {'variable': {'check': None}} TriggerTrueState.called = False TriggerFalseState.called = False workflow.run() assert TriggerTrueState.called is True assert TriggerFalseState.called is False
def test_trigger_multiple_same(self): workflow = Workflow.loadFromFile( 'tests/resources/trigger_multiple_same_workflow.json') workflow.variables['success'] = True TriggerTrueState.called = False TriggerFalseState.called = False workflow.run() assert TriggerTrueState.called is True assert TriggerFalseState.called is False
def test_trigger_multiple(self): workflow = Workflow.loadFromFile( 'tests/resources/trigger_multiple_workflow.json') workflow.variables['success'] = True if ispython3: with self.assertRaisesRegex( RuntimeError, "A workflow could transition to multiple states"): workflow.run() else: with self.assertRaisesRegexp( RuntimeError, "A workflow could transition to multiple states"): workflow.run()
import logging import random from CodeFlow.workflow import Workflow, State logger = logging.getLogger('CodeFlow') logger.setLevel(logging.INFO) logger.info('starting example') # list of state classes class TestState(State): def run(self): self.variables['success'] = bool(random.getrandbits(1)) class DoMagicState(State): def run(self): print("gotta love this magic") class PrintResultState(State): def run(self): print("success: {}".format(self.variables['success'])) # actually load and run the workflow workflow = Workflow.loadFromFile('example/workflow.json') workflow.run()
def test_is_not_state(self): workflow = Workflow.loadFromFile( "tests/resources/not_a_state_workflow.json") with self.assertRaises(TypeError): workflow.run()
def createWorkflow(self): return Workflow.loadFromFile(self.workflowFile)