"""Базовые тесты моделей и структуры проекта."""
import pytest
from vmk_data_mcp.models import (
GetListingInput,
ListingResult,
MetadataFilters,
PaginationParams,
SearchMetadataInput,
SearchResult,
SearchSimilarInput,
)
def test_pagination_defaults():
p = PaginationParams()
assert p.limit == 20
assert p.offset == 0
def test_pagination_bounds():
with pytest.raises(ValueError):
PaginationParams(limit=0)
with pytest.raises(ValueError):
PaginationParams(limit=101)
with pytest.raises(ValueError):
PaginationParams(offset=-1)
def test_metadata_filters_empty():
f = MetadataFilters()
assert f.deal_type is None
assert f.city is None
def test_search_similar_input():
inp = SearchSimilarInput(query="двокімнатна квартира київ")
assert inp.query == "двокімнатна квартира київ"
assert inp.min_similarity == 0.7
assert inp.pagination.limit == 20
def test_search_metadata_input():
inp = SearchMetadataInput(query="центр міста")
assert inp.query == "центр міста"
def test_get_listing_input():
inp = GetListingInput(listing_id=42)
assert inp.listing_id == 42
def test_listing_result_serializes():
listing = ListingResult(id=1, title="Test")
data = listing.model_dump()
assert data["id"] == 1
assert data["title"] == "Test"
def test_search_result_serializes():
result = SearchResult(total=5, limit=10, offset=0, listings=[])
data = result.model_dump()
assert data["total"] == 5