def test_execution_order(): rule_1 = ExampleRule(name="rule_1", param="rule_1") rule_2 = ExampleRule(name="rule_2", param="rule_2") rule_3 = ExampleRule(name="rule_3", param="rule_3") rule_1.get_execution_order = Mock(return_value=[]) rule_2.get_execution_order = Mock(return_value=[]) rule_3.get_execution_order = Mock(return_value=[]) law = Law(name="Passing", description="passing law", rules=(rule_1, rule_2, rule_3)) law.get_execution_order() rule_1.get_execution_order.assert_called_once_with() rule_2.get_execution_order.assert_called_once_with() rule_3.get_execution_order.assert_called_once_with()
def test_execution_order_no_chain(): rule_1 = ExampleRule(name="rule_1", param="rule_1") rule_1.get_rule_chain = Mock(return_value=[]) expected_execution_order = [rule_1] order = rule_1.get_execution_order() assert order == expected_execution_order assert rule_1.get_rule_chain.called is False
def test_execution_order(): rule_1 = ExampleRule(name="rule_1", param="rule_1") rule_2 = ExampleRule(name="rule_2", param="rule_2") rule_3 = ExampleRule(name="rule_3", param="rule_3") rule_4 = ExampleRule(name="rule_4", param="rule_4") rule_1.pipe = rule_2 rule_1.children = [rule_3, rule_4] rule_1.get_rule_chain = Mock(side_effect=[[rule_2], [rule_3], [rule_4]]) rule_1.preconditions = [PASSING_PRECONDITION] expected_execution_order = [ PASSING_PRECONDITION, rule_1, rule_2, rule_3, rule_4 ] order = rule_1.get_execution_order() assert order == expected_execution_order rule_1.get_rule_chain.assert_has_calls( [call(rule_2), call(rule_3), call(rule_4)])