72 lines
2 KiB
Python
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 result.page_size == 2
|
|
assert result.page and result.page[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(searchString="hello", limit=5)
|
|
dumped = opts.model_dump(exclude_none=True)
|
|
assert dumped["searchString"] == "hello"
|
|
assert dumped["limit"] == 5
|
|
|
|
def test_search_result_minimal(self):
|
|
result = SearchResult.model_validate({})
|
|
assert result.count is None
|