agravity_client/tests/test_models.py

72 lines
2 KiB
Python

"""Basic smoke tests for Pydantic model validation."""
from __future__ import annotations
import pytest
from agravity_client.models import (
Asset,
AssetBlob,
AssetBlobType,
AssetPageResult,
Collection,
AgravityVersion,
SearchResult,
AzSearchOptions,
)
class TestAssetModel:
def test_minimal_asset(self):
asset = Asset.model_validate({"id": "abc123"})
assert asset.id == "abc123"
def test_asset_with_blob_type_enum(self):
asset = Asset.model_validate({
"id": "abc",
"asset_type": "IMAGE",
})
assert asset.asset_type == "IMAGE"
def test_asset_page_result(self):
result = AssetPageResult.model_validate({
"assets": [{"id": "a1"}, {"id": "a2"}],
"size": 2,
})
assert len(result.assets) == 2
assert result.assets[0].id == "a1"
def test_extra_fields_allowed(self):
"""Unknown API fields must not raise ValidationError."""
asset = Asset.model_validate({"id": "x", "future_field": "value"})
assert asset.id == "x"
class TestCollectionModel:
def test_minimal_collection(self):
coll = Collection.model_validate({"id": "c1", "name": "Root"})
assert coll.id == "c1"
assert coll.name == "Root"
class TestVersionModel:
def test_agravity_version(self):
v = AgravityVersion.model_validate({
"name": "Agravity",
"version": "10.3.0",
})
assert v.version == "10.3.0"
class TestSearchModels:
def test_search_options_defaults(self):
opts = AzSearchOptions()
assert opts.limit is None
def test_search_options_with_values(self):
opts = AzSearchOptions(searchterm="hello", limit=5)
dumped = opts.model_dump(exclude_none=True)
assert dumped["searchterm"] == "hello"
assert dumped["limit"] == 5
def test_search_result_minimal(self):
result = SearchResult.model_validate({})
assert result.count is None