Newer
Older
gnexus-tasks / backend / tests / test_settings.py
"""Тесты глобальных настроек: валюта и язык 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