"""Тесты глобальных настроек: валюта и язык UI."""
from fastapi.testclient import TestClient
def test_default_settings(client: TestClient) -> None:
# по умолчанию UAH, язык не переопределён (следует SSO locale)
assert client.get("/api/settings").json() == {"currency": "UAH", "language": ""}
def test_update_currency_and_language(client: TestClient) -> None:
body = client.put("/api/settings", json={"currency": "EUR", "language": "en"}).json()
assert body == {"currency": "EUR", "language": "en"}
assert client.get("/api/settings").json() == {"currency": "EUR", "language": "en"}
def test_partial_put_keeps_other_fields(client: TestClient) -> None:
client.put("/api/settings", json={"currency": "USD", "language": "uk"})
# PUT только языка не затирает валюту
body = client.put("/api/settings", json={"language": "ru"}).json()
assert body == {"currency": "USD", "language": "ru"}
# PUT только валюты не затирает язык
body = client.put("/api/settings", json={"currency": "GBP"}).json()
assert body == {"currency": "GBP", "language": "ru"}
def test_clear_language_override(client: TestClient) -> None:
# '' сбрасывает переопределение → снова «как в аккаунте»
client.put("/api/settings", json={"language": "en"})
assert client.put("/api/settings", json={"language": ""}).json()["language"] == ""
def test_invalid_language_422(client: TestClient) -> None:
assert client.put("/api/settings", json={"language": "xx"}).status_code == 422