test_serve_messages_langue.py
Rama main · réplica de lectura del repositorio original.
"""Les messages du serveur suivent la langue de la page (issue #121)."""
from __future__ import annotations
import os
import tempfile
import time
import unittest
from unittest import mock
os.environ["BLINK_BOOTSTRAP"] = "none"
_TEST_HOME = tempfile.TemporaryDirectory(prefix="blink-messages-langue-")
os.environ["BLINK_HOME"] = _TEST_HOME.name
import runtime # noqa: E402
import serve # noqa: E402 - environnement isole avant import
class ModuleOccupe(unittest.TestCase):
"""Le message qu'a vu Markus. Seul son texte suit la langue : le statut
HTTP 409 d'un module occupé ne change pas, c'est lui que les scripts
doivent tester."""
def setUp(self):
serve.MODULE_SLOT_INFO.clear()
self.addCleanup(serve.MODULE_SLOT_INFO.clear)
def _message(self, langue: str) -> str:
with mock.patch.object(runtime, "lire_langue", return_value=langue):
return serve._slot_occupe_message()
def test_occupation_inconnue(self):
self.assertEqual(self._message("en"), "The module is already busy (live view or refresh).")
self.assertIn("déjà occupé", self._message("fr"))
def test_occupation_traduite_identifiant_interne_intact(self):
serve._slot_pris("direct MSE", "Jardin")
serve.MODULE_SLOT_INFO["depuis"] = time.monotonic() - 12
anglais = self._message("en")
self.assertTrue(anglais.startswith("The module is already busy: live view (Jardin), for 1"),
anglais)
self.assertIn("direct (Jardin)", self._message("fr"))
# L'identifiant interne, comparé tel quel ailleurs, n'est pas traduit.
self.assertEqual(serve.MODULE_SLOT_INFO["quoi"], "direct MSE")
class TitresDeSection(unittest.TestCase):
"""L'enfant download écrit ses titres dans sa langue ; la page doit
recevoir la même clé de traduction dans les deux cas."""
def test_cloud_dans_les_deux_langues(self):
self.assertIn("CLOUD DE L'ABONNEMENT", serve._TITRES_CLOUD)
self.assertIn("SUBSCRIPTION CLOUD", serve._TITRES_CLOUD)
def test_stockage_local_dans_les_deux_langues(self):
self.assertEqual(serve._hub_section_usb("STOCKAGE LOCAL : Maison"), "Maison")
self.assertEqual(serve._hub_section_usb("LOCAL STORAGE: Maison"), "Maison")
self.assertIsNone(serve._hub_section_usb("SUBSCRIPTION CLOUD"))
if __name__ == "__main__":
unittest.main()