Files
decluttarr/tests/utils/nest_functions/test_nest_functions.py
2024-09-14 11:28:07 +02:00

153 lines
4.1 KiB
Python

# python3 -m pytest
import pytest
from src.utils.nest_functions import nested_set, add_keys_nested_dict, nested_get
# import asyncio
# Dictionary that is modified / queried as part of tests
input_dict = {
1: {
"name": "Breaking Bad 1",
"data": {"episodes": 3, "year": 1991, "actors": ["Peter", "Paul", "Ppacey"]},
},
2: {
"name": "Breaking Bad 2",
"data": {"episodes": 6, "year": 1992, "actors": ["Weter", "Waul", "Wpacey"]},
},
3: {
"name": "Breaking Bad 3",
"data": {"episodes": 9, "year": 1993, "actors": ["Zeter", "Zaul", "Zpacey"]},
},
}
# @pytest.mark.asyncio
# async def test_nested_set():
def test_nested_set():
expected_output = {
1: {
"name": "Breaking Bad 1",
"data": {
"episodes": 3,
"year": 1991,
"actors": ["Peter", "Paul", "Ppacey"],
},
},
2: {
"name": "Breaking Bad 2",
"data": {
"episodes": 6,
"year": 1994,
"actors": ["Weter", "Waul", "Wpacey"],
},
},
3: {
"name": "Breaking Bad 3",
"data": {
"episodes": 9,
"year": 1993,
"actors": ["Zeter", "Zaul", "Zpacey"],
},
},
}
output = input_dict
# await nested_set(output, [2, 'data' ,'year'], 1994)
nested_set(output, [2, "data", "year"], 1994)
assert expected_output == output
def test_nested_set_conditions():
input = {
1: [
{"year": 2001, "rating": "high"},
{"year": 2002, "rating": "high"},
{"year": 2003, "rating": "high"},
],
2: [
{"year": 2001, "rating": "high"},
{"year": 2002, "rating": "high"},
{"year": 2003, "rating": "high"},
],
}
expected_output = {
1: [
{"year": 2001, "rating": "high"},
{"year": 2002, "rating": "high"},
{"year": 2003, "rating": "high"},
],
2: [
{"year": 2001, "rating": "high"},
{"year": 2002, "rating": "high"},
{"year": 2003, "rating": "LOW"},
],
}
output = input
nested_set(output, [2, "rating"], "LOW", {"year": 2003})
assert expected_output == output
def test_nested_set_conditions_multiple():
input = {
1: [
{"rating": "high", "color": 1, "stack": 1},
{"rating": "high", "color": 2, "stack": 2},
{"rating": "high", "color": 2, "stack": 1},
]
}
expected_output = {
1: [
{"rating": "high", "color": 1, "stack": 1},
{"rating": "high", "color": 2, "stack": 2},
{"rating": "LOW", "color": 2, "stack": 1},
]
}
output = input
nested_set(output, [1, "rating"], "LOW", {"color": 2, "stack": 1})
assert expected_output == output
def test_add_keys_nested_dict():
expected_output = {
1: {
"name": "Breaking Bad 1",
"data": {
"episodes": 3,
"year": 1991,
"actors": ["Peter", "Paul", "Ppacey"],
},
},
2: {
"name": "Breaking Bad 2",
"data": {
"episodes": 6,
"year": 1994,
"actors": ["Weter", "Waul", "Wpacey"],
"spaceship": True,
},
},
3: {
"name": "Breaking Bad 3",
"data": {
"episodes": 9,
"year": 1993,
"actors": ["Zeter", "Zaul", "Zpacey"],
},
},
}
output = input_dict
add_keys_nested_dict(output, [2, "data", "spaceship"], True)
assert expected_output == output
def test_nested_get():
input = {
1: [
{"name": "A", "color": 1, "stack": 1},
{"name": "B", "color": 2, "stack": 2},
{"name": "C", "color": 2, "stack": 1},
]
}
expected_output = ["C"]
output = nested_get(input[1], "name", {"color": 2, "stack": 1})
assert expected_output == output