python-benedict/tests/core/test_nest.py

117 lines
4.3 KiB
Python
Raw Normal View History

import unittest
2020-02-06 14:16:11 +00:00
from benedict.core import clone as _clone
from benedict.core import nest as _nest
class nest_test_case(unittest.TestCase):
2022-02-13 10:35:43 +00:00
"""
This class describes a nest test case.
"""
2020-02-06 14:16:11 +00:00
def test_nest(self):
l = [
2022-02-13 10:35:43 +00:00
{"id": 1, "parent_id": None, "name": "John"},
{"id": 2, "parent_id": 1, "name": "Frank"},
{"id": 3, "parent_id": 2, "name": "Tony"},
{"id": 4, "parent_id": 3, "name": "Jimmy"},
{"id": 5, "parent_id": 1, "name": "Sam"},
{"id": 6, "parent_id": 3, "name": "Charles"},
{"id": 7, "parent_id": 2, "name": "Bob"},
{"id": 8, "parent_id": 3, "name": "Paul"},
{"id": 9, "parent_id": None, "name": "Michael"},
2020-02-06 14:16:11 +00:00
]
l_clone = _clone(l)
2022-02-13 10:35:43 +00:00
n = _nest(l, "id", "parent_id", "children")
2020-02-06 14:16:11 +00:00
r = [
2022-02-13 10:35:43 +00:00
{
"id": 1,
"parent_id": None,
"name": "John",
"children": [
{
"id": 2,
"parent_id": 1,
"name": "Frank",
"children": [
{
"id": 3,
"parent_id": 2,
"name": "Tony",
"children": [
{
"id": 4,
"parent_id": 3,
"name": "Jimmy",
"children": [],
},
{
"id": 6,
"parent_id": 3,
"name": "Charles",
"children": [],
},
{
"id": 8,
"parent_id": 3,
"name": "Paul",
"children": [],
},
],
},
{
"id": 7,
"parent_id": 2,
"name": "Bob",
"children": [],
},
],
},
{
"id": 5,
"parent_id": 1,
"name": "Sam",
"children": [],
},
],
},
{
"id": 9,
"parent_id": None,
"name": "Michael",
"children": [],
},
2020-02-06 14:16:11 +00:00
]
self.assertEqual(l, l_clone)
self.assertEqual(n, r)
def test_nest_with_wrong_keys(self):
l = [
2022-02-13 10:35:43 +00:00
{"id": 1, "parent_id": None, "name": "John"},
{"id": 2, "parent_id": 1, "name": "Frank"},
{"id": 3, "parent_id": 2, "name": "Tony"},
{"id": 4, "parent_id": 3, "name": "Jimmy"},
{"id": 5, "parent_id": 1, "name": "Sam"},
{"id": 6, "parent_id": 3, "name": "Charles"},
{"id": 7, "parent_id": 2, "name": "Bob"},
{"id": 8, "parent_id": 3, "name": "Paul"},
{"id": 9, "parent_id": None, "name": "Michael"},
2020-02-06 14:16:11 +00:00
]
with self.assertRaises(ValueError):
2022-02-13 10:35:43 +00:00
n = _nest(l, "id", "id", "children")
2020-02-06 14:16:11 +00:00
with self.assertRaises(ValueError):
2022-02-13 10:35:43 +00:00
n = _nest(l, "id", "parent_id", "id")
2020-02-06 14:16:11 +00:00
with self.assertRaises(ValueError):
2022-02-13 10:35:43 +00:00
n = _nest(l, "id", "parent_id", "parent_id")
2020-02-06 14:16:11 +00:00
def test_nest_with_wrong_input(self):
2022-02-13 10:35:43 +00:00
l = {"id": 1, "parent_id": None, "name": "John"}
2020-02-06 14:16:11 +00:00
with self.assertRaises(ValueError):
2022-02-13 10:35:43 +00:00
d = _nest(l, "id", "parent_id", "children")
2020-02-06 14:16:11 +00:00
l = [
2022-02-13 10:35:43 +00:00
[{"id": 1, "parent_id": None, "name": "John"}],
[{"id": 2, "parent_id": 1, "name": "Frank"}],
2020-02-06 14:16:11 +00:00
]
with self.assertRaises(ValueError):
2022-02-13 10:35:43 +00:00
d = _nest(l, "id", "parent_id", "children")