Solareva Taisia
chore(release): initial public snapshot
198ccb0
"""Tests for FastAPI application."""
import pytest
from fastapi.testclient import TestClient
from api.main import app
client = TestClient(app)
def test_root():
"""Test root endpoint."""
response = client.get("/")
assert response.status_code == 200
assert "message" in response.json()
def test_health():
"""Test health endpoint."""
response = client.get("/health")
assert response.status_code == 200
data = response.json()
assert "status" in data
assert "model_loaded" in data
def test_classify_invalid_request():
"""Test classification with invalid request."""
# Empty title
response = client.post(
"/classify",
json={"title": ""}
)
assert response.status_code == 422 # Validation error
# Missing title
response = client.post(
"/classify",
json={}
)
assert response.status_code == 422
def test_classify_valid_request():
"""Test classification with valid request."""
# Note: This will fail if model is not loaded
response = client.post(
"/classify",
json={
"title": "Тестовая новость",
"snippet": "Описание новости",
"threshold": 0.5
}
)
# Should either succeed (if model loaded) or return 503 (if not)
assert response.status_code in [200, 503]
def test_classify_batch():
"""Test batch classification."""
response = client.post(
"/classify/batch",
json={
"items": [
{"title": "Новость 1"},
{"title": "Новость 2"}
]
}
)
# Should either succeed or return 503
assert response.status_code in [200, 503]
def test_classify_with_top_k():
"""Test classification with top_k parameter."""
response = client.post(
"/classify",
json={
"title": "Тестовая новость",
"top_k": 5
}
)
assert response.status_code in [200, 503]
if response.status_code == 200:
data = response.json()
assert len(data["predictions"]) <= 5
def test_classify_threshold_validation():
"""Test threshold validation."""
# Invalid threshold (> 1.0)
response = client.post(
"/classify",
json={
"title": "Тест",
"threshold": 1.5
}
)
assert response.status_code == 422
# Invalid threshold (< 0.0)
response = client.post(
"/classify",
json={
"title": "Тест",
"threshold": -0.1
}
)
assert response.status_code == 422
def test_classify_top_k_validation():
"""Test top_k validation."""
# Invalid top_k (> 100)
response = client.post(
"/classify",
json={
"title": "Тест",
"top_k": 200
}
)
assert response.status_code == 422
# Invalid top_k (< 1)
response = client.post(
"/classify",
json={
"title": "Тест",
"top_k": 0
}
)
assert response.status_code == 422