64 lines
1.4 KiB
Python
64 lines
1.4 KiB
Python
|
from typing import Any, List
|
||
|
|
||
|
import pytest
|
||
|
|
||
|
from libbot import sync
|
||
|
|
||
|
|
||
|
@pytest.mark.parametrize(
|
||
|
"target, value, path, create_missing, expected",
|
||
|
[
|
||
|
({"foo": "bar"}, "rab", ["foo"], True, {"foo": "rab"}),
|
||
|
({"foo": "bar"}, {"123": 456}, ["foo"], True, {"foo": {"123": 456}}),
|
||
|
(
|
||
|
{"foo": {"bar": {}}},
|
||
|
True,
|
||
|
["foo", "bar", "test"],
|
||
|
True,
|
||
|
{"foo": {"bar": {"test": True}}},
|
||
|
),
|
||
|
(
|
||
|
{"foo": {"bar": {}}},
|
||
|
True,
|
||
|
["foo", "bar", "test"],
|
||
|
False,
|
||
|
{"foo": {"bar": {}}},
|
||
|
),
|
||
|
],
|
||
|
)
|
||
|
def test_nested_set_valid(
|
||
|
target: dict[str, Any],
|
||
|
value: Any,
|
||
|
path: List[str],
|
||
|
create_missing: bool,
|
||
|
expected: Any,
|
||
|
):
|
||
|
assert (
|
||
|
sync.nested_set(target, value, *path, create_missing=create_missing)
|
||
|
) == expected
|
||
|
|
||
|
|
||
|
@pytest.mark.parametrize(
|
||
|
"target, value, path, create_missing, expected",
|
||
|
[
|
||
|
(
|
||
|
{"foo": {"bar": {}}},
|
||
|
True,
|
||
|
["foo", "bar", "test1", "test2"],
|
||
|
False,
|
||
|
KeyError,
|
||
|
),
|
||
|
],
|
||
|
)
|
||
|
def test_nested_set_invalid(
|
||
|
target: dict[str, Any],
|
||
|
value: Any,
|
||
|
path: List[str],
|
||
|
create_missing: bool,
|
||
|
expected: Any,
|
||
|
):
|
||
|
with pytest.raises(expected):
|
||
|
assert (
|
||
|
sync.nested_set(target, value, *path, create_missing=create_missing)
|
||
|
) == expected
|