Files
kanbante/tests/test_barre_v041.py
T
2026-11-06 14:49:25 +00:00

54 lines
2.3 KiB
Python

"""Barre commune v0.4.1 (correctif fusion #125) — re-vendange 0.45.12.
- JS vendangé VERBATIM depuis dracodev-commons, branche
menu-compte-icones-svg-ns-v0-4-1 (PR commons #11),
ui/barre-apps/. Le CSS est lui aussi verbatim : la source
commons v0.4.1 y ajoute le resserrement du menu compte
(min-width 248 → 232 px, demande de Bruno, @edde1b5).
- Correctif : en v0.4.0, les icônes du menu compte étaient
créées via document.createElement() — espace de noms HTML,
jamais dessinées par le navigateur (libellés décalés d'un
cran d'icône, aucun glyphe visible en production). La v0.4.1
crée le <svg> et ses primitives via
document.createElementNS() (espace de noms SVG).
"""
import hashlib
from pathlib import Path
R = Path(__file__).resolve().parents[1]
# Empreintes SHA-256 de la source commons
# (Projets/dracodev-commons, ui/barre-apps/ ; branche du
# correctif v0.4.1 @edde1b5 : JS espace de noms SVG, CSS
# menu compte resserré à 232 px).
SHA256_CSS_V041 = "874b26eafba5b3e174140280415edbae00cd38bc4beb39d897a4b4c5b923af6e"
SHA256_JS_V041 = "82c4940e8e115ed71d95f7c0dcdc906b93e49855580cc0fec7a1ccba34f85a42"
def _sha256(chemin):
return hashlib.sha256((R / chemin).read_bytes()).hexdigest()
def test_barre_css_js_verbatim_commons_v041():
# Remplacé en 0.46.1 : la re-vendange v0.5.0 (HUB-18, thème
# commun) supersède l'empreinte JS v0.4.1 — l'empreinte courante
# est verrouillée par tests/test_barre_v050.py. Le CSS, inchangé
# en v0.5.0, garde son empreinte v0.4.1 ; le JS a quitté la v0.4.1.
assert _sha256("static/css/draco-barre.css") == SHA256_CSS_V041
assert _sha256("static/js/draco-barre.js") != SHA256_JS_V041
def test_js_icones_espace_de_noms_svg():
js = (R / "static/js/draco-barre.js").read_text(encoding="utf-8")
assert "MENU_ICONES" in js
# Le correctif : création dans l'espace de noms SVG…
assert 'createElementNS(SVG_NS, "svg")' in js
assert "createElementNS(SVG_NS, spec[0])" in js
# …et plus aucune création HTML du svg ou des primitives.
assert 'createElement("svg")' not in js
assert "createElement(spec[0])" not in js
# Comportements conservés.
assert 'hub: "https://hub.dracodev.net/"' in js
assert '"profil", "Profil"' in js
assert 'data-compte-act", "deconnexion"' in js