1
0
mirror of https://github.com/checktheroads/hyperglass synced 2024-05-11 05:55:08 +00:00
Files
checktheroads-hyperglass/hyperglass/models/tests/test_multi_model.py
2021-09-21 07:54:16 -07:00

45 lines
980 B
Python

"""Test HyperglassMultiModel."""
# Third Party
from pydantic import BaseModel
# Local
from ..main import MultiModel
class Item(BaseModel):
"""Test item."""
id: str
name: str
ITEMS_1 = [
{"id": "item1", "name": "Item One"},
Item(id="item2", name="Item Two"),
{"id": "item3", "name": "Item Three"},
]
ITEMS_2 = [
Item(id="item4", name="Item Four"),
{"id": "item5", "name": "Item Five"},
]
ITEMS_3 = [
{"id": "item1", "name": "Item New One"},
{"id": "item6", "name": "Item Six"},
]
def test_multi_model():
model = MultiModel(*ITEMS_1, model=Item, accessor="id")
assert model.count == 3
assert len([o for o in model]) == model.count # noqa: C416 (Iteration testing)
assert model["item1"].name == "Item One"
model.add(*ITEMS_2)
assert model.count == 5
assert model[3].name == "Item Four"
model.add(*ITEMS_3, unique_by="id")
assert model.count == 6
assert model["item1"].name == "Item New One"