Esempio n. 1
0
def combine_action_data(
    combined_data: ActionsData, action_data: ActionsData
) -> ActionsData:
    """
    Combine outputs and results with existing state or of multiple run_action results

    Args:
        combined_data: Initial data that has already been combined (or empty)
        action_data: Action data from a single run_action result

    Returns:
        Existing data combined with one runner's run_action result (does not overwrite combined_data)
    """
    combined_keys: List[str] = combine_keys(combined_data, action_data)

    return {
        key: {
            "results": combine_datas(
                combined_data.get(key, {}).get("results", []),
                action_data.get(key, {}).get("results", []),
            ),
            "outputs": combine_data_by_key(
                combined_data.get(key, {}).get("outputs", {}),
                action_data.get(key, {}).get("outputs", {}),
            ),
            "asserts": combine_data_by_key(
                combined_data.get(key, {}).get("asserts", {}),
                action_data.get(key, {}).get("asserts", {}),
            ),
        }
        for key in combined_keys
    }
Esempio n. 2
0
def test_combine_data_one_empty():
    data_a = [1, 2]
    data_b = []

    combined_data = state.combine_datas(data_a, data_b)

    assert combined_data == [1, 2]
Esempio n. 3
0
def test_combine_data_both_empty_non_list():
    data_a = 1
    data_b = 2

    combined_data = state.combine_datas(data_a, data_b)

    assert combined_data == 2
Esempio n. 4
0
def test_combine_data_both_lists():
    data_a = [1, 2]
    data_b = [3, 4]

    combined_data = state.combine_datas(data_a, data_b)

    assert combined_data == [1, 2, 3, 4]
Esempio n. 5
0
def test_combine_data_different_types():
    data_a = [1]
    data_b = 2

    with pytest.raises(AssertionError):
        state.combine_datas(data_a, data_b)