Some checks failed
E2E Tests / e2e (push) Waiting to run
Tests unitaires / Web (Angular · vitest + couverture) (push) Successful in 26s
Build & Push Images / tests (push) Failing after 13s
Build & Push Images / build (brain) (push) Has been skipped
Build & Push Images / build (core) (push) Has been skipped
Build & Push Images / build (web) (push) Has been skipped
Build & Push Images / build-switcher (push) Has been skipped
Tests unitaires / Brain (Python · pytest + couverture) (push) Successful in 1m12s
Tests unitaires / Core (Java · mvn test + JaCoCo) (push) Failing after 1m28s
Mise en place de tests unitaires coté Python et Angular Mise en place de la couverture de test directement dans le workflow : le programme ne build pas si jamais un test échoue Passage en v0.16.2 en conséquence
40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
"""Tests de la normalisation de langue (app.core.language)."""
|
|
from __future__ import annotations
|
|
|
|
import pytest
|
|
|
|
from app.core import language
|
|
|
|
|
|
@pytest.mark.parametrize("raw, expected", [
|
|
("fr", "fr"),
|
|
("en", "en"),
|
|
("EN", "en"),
|
|
("en-US", "en"),
|
|
("fr-FR,fr;q=0.9,en;q=0.8", "fr"),
|
|
("en-GB,en;q=0.9", "en"),
|
|
("de", "fr"), # non supporté → défaut
|
|
("", "fr"),
|
|
(None, "fr"),
|
|
(" EN-gb ", "en"), # casse + espaces tolérés
|
|
])
|
|
def test_normalize(raw, expected):
|
|
assert language.normalize(raw) == expected
|
|
|
|
|
|
def test_language_name_known_and_fallback():
|
|
assert language.language_name("fr") == "français"
|
|
assert language.language_name("en") == "anglais"
|
|
# Code inconnu → nom de la langue par défaut.
|
|
assert language.language_name("xx") == "français"
|
|
|
|
|
|
def test_instruction_mentions_target_language():
|
|
assert "anglais" in language.instruction("en")
|
|
assert "français" in language.instruction("fr")
|
|
|
|
|
|
def test_get_user_language_uses_normalize():
|
|
assert language.get_user_language("en-US") == "en"
|
|
assert language.get_user_language(None) == "fr"
|