Esempio n. 1
0
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()
Esempio n. 2
0
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
Esempio n. 3
0
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)])