"""Contrat JSON de `POST /v1/train` — voir `schemas.py`/`routes/train.py`.""" import pytest from fastapi.testclient import TestClient from intent_service.config import settings from intent_service.main import app _HEADERS = {"X-Intent-Service-Secret": settings.intent_service_secret} @pytest.fixture def client(): with TestClient(app) as test_client: yield test_client def test_train_returns_counts(client: TestClient): response = client.post( "/v1/train", headers=_HEADERS, json={ "locale": "fr", "entries": [ {"uid": "melt", "synonyms": ["faire fondre"], "utterances": ["faire fondre le beurre"]}, {"uid": "boil", "synonyms": ["bouillir"], "utterances": ["faire bouillir l'eau"]}, ], }, ) assert response.status_code == 200 body = response.json() assert body == {"locale": "fr", "labelCount": 2, "utteranceCount": 2, "synonymCount": 2} def test_train_with_unsupported_locale_returns_422(client: TestClient): response = client.post( "/v1/train", headers=_HEADERS, json={"locale": "de", "entries": [{"uid": "melt", "synonyms": [], "utterances": []}]}, ) assert response.status_code == 422 def test_train_with_empty_entries_returns_zero_counts(client: TestClient): response = client.post("/v1/train", headers=_HEADERS, json={"locale": "en", "entries": []}) assert response.status_code == 200 assert response.json() == {"locale": "en", "labelCount": 0, "utteranceCount": 0, "synonymCount": 0}