mirror of
https://github.com/checktheroads/hyperglass
synced 2024-05-11 05:55:08 +00:00
45 lines
980 B
Python
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"
|