Ctrl K
ComunidadGuías…

test_serve_messages_langue.py

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
"""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()