69 lines
3.2 KiB
Python
69 lines
3.2 KiB
Python
"""Barre d'apps Flowdeck : aucun texte de chantier rendu hors commentaire.
|
|
|
|
Defaut 5 : les lignes « Chantier 5 (fusion #69/#71, sans bump) : ... »
|
|
etaient placees APRES la fermeture `#}` du commentaire Jinja d'en-tete
|
|
de `app/templates/_draco_bar.html` (lignes 9-11) : elles etaient donc
|
|
rendues telles quelles, juste au-dessus du <header> de la barre, sur
|
|
toutes les pages (la barre est incluse par base.html).
|
|
|
|
Test sans dependance (lecture du gabarit seul, comme
|
|
test_draco_alertes.py) : il tourne sans serveur ni base, donc aussi
|
|
en sandbox. La note documentaire peut vivre DANS le commentaire Jinja
|
|
(jamais rendu) ; elle ne doit jamais en sortir.
|
|
"""
|
|
|
|
import re
|
|
from pathlib import Path
|
|
|
|
ROOT = Path(__file__).resolve().parent.parent
|
|
|
|
|
|
def _hors_commentaires(texte):
|
|
"""Texte du gabarit sans les commentaires Jinja {# ... #}."""
|
|
return re.sub(r"\{#.*?#\}", "", texte, flags=re.S)
|
|
|
|
|
|
def test_aucun_texte_chantier_rendu():
|
|
gabarit = (ROOT / "app/templates/_draco_bar.html").read_text()
|
|
rendu = _hors_commentaires(gabarit)
|
|
assert "Chantier 5 (fusion" not in rendu
|
|
assert "sans bump" not in rendu
|
|
# Aucune ligne de texte libre entre le commentaire d'en-tete et <link> :
|
|
# le rendu doit commencer (apres commentaires) par <link> ou <header>.
|
|
assert rendu.lstrip().startswith("<link")
|
|
|
|
|
|
def test_barre_v020_onglet_shaarit_et_garde_data_theme():
|
|
"""Barre v0.2.0 (commons @70c837a) : onglet ShaarIt entre Kanbante
|
|
et l'onglet agent, logo fourni tel quel, CSS vendangé verbatim
|
|
avec la garde data-theme sur prefers-color-scheme."""
|
|
gabarit = (ROOT / "app/templates/_draco_bar.html").read_text()
|
|
rendu = _hors_commentaires(gabarit)
|
|
nav = rendu.split('<nav class="draco-apptabs"')[1].split("</nav>")[0]
|
|
assert nav.index('data-app="kanbante"') < nav.index('data-app="shaarit"')
|
|
assert nav.index('data-app="shaarit"') < nav.index('data-app="agent"')
|
|
assert 'href="{{ draco_urls().shaarit }}/"' in nav
|
|
assert 'data-icon="shaarit"><img src="/static/img/logos/shaarit.svg"' in nav
|
|
assert (ROOT / "static/img/logos/shaarit.svg").is_file()
|
|
css = (ROOT / "static/css/draco-barre.css").read_text()
|
|
assert "html:not([data-theme]) .draco-bar {" in css
|
|
assert "html:not([data-theme]) .draco-bar .draco-brand-mark img" in css
|
|
js = (ROOT / "static/js/vendor/draco-barre.js").read_text()
|
|
assert 'shaarit: "https://shaarit.dracodev.net/"' in js
|
|
assert 'shaarit: "https://shaarit-dev.dracodev.net/"' in js
|
|
|
|
|
|
def test_barre_intacte_apres_suppression():
|
|
"""Le 5e onglet Console Spark et la marque survivent a la suppression."""
|
|
gabarit = (ROOT / "app/templates/_draco_bar.html").read_text()
|
|
rendu = _hors_commentaires(gabarit)
|
|
nav = rendu.split('<nav class="draco-apptabs"')[1].split("</nav>")[0]
|
|
assert nav.index('data-app="kanbante"') < nav.index('data-app="agent"')
|
|
assert "Console Spark" in nav
|
|
assert 'data-app="agent"' in nav
|
|
assert 'class="draco-brand"' in rendu
|
|
# L'entree « Console Spark » du menu de la marque est construite par
|
|
# draco-barre.js depuis les onglets : l'onglet agent suffit a l'alimenter.
|
|
js_barre = (ROOT / "static/js/vendor/draco-barre.js").read_text()
|
|
assert "Console Spark" in js_barre
|