def test_flow_predicate(self): root = FlowRoot("test", "This is my flowroot") node = root.connect("a", lambda ctx: 'toto' in ctx and ctx['toto'] == 'titui') somebody = TestPerson('me') # Non-matching predicate flow = Flow(root, somebody, {}) self.assertIn(node, flow.next_steps()) self.assertNotIn(node, flow.next_autosteps()) self.assertRaises(InvalidState, flow.advance, node) flow.advance(node, enforce_predicate=False) # This will bypass the restriction self.assertEqual(flow._current_step, node) # Matching predicate flow = Flow(root, somebody, {'toto': 'titui'}) self.assertIn(node, flow.next_steps()) self.assertIn(node, flow.next_autosteps()) flow.advance(node) self.assertEqual(flow._current_step, node)
def inject_flows_from(self, instance_to_inject): classname = instance_to_inject.__class__.__name__ for name, method in inspect.getmembers(instance_to_inject, inspect.ismethod): if getattr(method, "_err_flow", False): log.debug("Found new flow %s: %s", classname, name) flow = FlowRoot(name, method.__doc__) try: method(flow) except Exception: log.exception("Exception initializing a flow") self.flow_executor.add_flow(flow)
def test_flow_predicate(): root = FlowRoot("test", "This is my flowroot") node = root.connect("a", lambda ctx: 'toto' in ctx and ctx['toto'] == 'titui') somebody = TestPerson('me') # Non-matching predicate flow = Flow(root, somebody, {}) assert node in flow.next_steps() assert node not in flow.next_autosteps() with pytest.raises(InvalidState): flow.advance(node) flow.advance(node, enforce_predicate=False) # This will bypass the restriction assert flow._current_step == node # Matching predicate flow = Flow(root, somebody, {'toto': 'titui'}) assert node in flow.next_steps() assert node in flow.next_autosteps() flow.advance(node) assert flow._current_step == node
def test_autotrigger(): root = FlowRoot("test", "This is my flowroot") node = root.connect("a", lambda ctx: 'toto' in ctx and ctx['toto'] == 'titui', auto_trigger=True) assert node.command in root.auto_triggers
def test_node(): root = FlowRoot("test", "This is my flowroot") node = root.connect("a", lambda ctx: ctx['toto'] == 'titui') assert root.predicate_for_node(node)({'toto': 'titui'}) assert not root.predicate_for_node(node)({'toto': 'blah'})
def test_autotrigger(): root = FlowRoot("test", "This is my flowroot") node = root.connect("a", lambda ctx: "toto" in ctx and ctx["toto"] == "titui", auto_trigger=True) assert node.command in root.auto_triggers
def test_node(): root = FlowRoot("test", "This is my flowroot") node = root.connect("a", lambda ctx: ctx["toto"] == "titui") assert root.predicate_for_node(node)({"toto": "titui"}) assert not root.predicate_for_node(node)({"toto": "blah"})
def test_node(self): root = FlowRoot("test", "This is my flowroot") node = root.connect("a", lambda ctx: ctx['toto'] == 'titui') self.assertTrue(root.predicate_for_node(node)({'toto': 'titui'})) self.assertFalse(root.predicate_for_node(node)({'toto': 'blah'}))