Files
kanbante/tests/test_palier22.py
T
Spark 9fe35f6c8f
CI / test (push) Successful in 2m26s
feat(0.33.0): filtrage professionnel sur Mes issues (/my)
- Barre de filtres en carte : recherche texte (titre, projet,
  #numéro, étiquettes ; accents/casse ignorés, raccourci /),
  listes Projet et Étiquette avec compteurs, chips de
  colonnes colorées multi-sélection, 4 tris.
- Facettes calculées côté serveur ; filtrage instantané côté
  client (attributs data-*), compteur en direct, compteurs
  de section, état vide + réinitialisation.
- Filtres structurels persistés en localStorage.
- 281 tests verts (3 nouveaux, palier 22) ; vérifié en
  Chromium réel sur les vraies données (467 issues :
  recherche 'agent' -> 24 résultats instantanés).
2026-10-26 10:20:37 -04:00

40 lines
1.4 KiB
Python

"""Palier 22 (0.33.0): barre de filtres de la page Mes issues —
facettes serveur, lignes annotées, moteur client chargé."""
def test_my_page_has_filter_bar_and_facets(client):
r = client.get("/my")
assert r.status_code == 200
# La barre et ses contrôles.
assert 'id="my-filters"' in r.text
assert 'id="my-search"' in r.text
assert 'id="my-repo"' in r.text
assert 'id="my-label"' in r.text
assert 'id="my-sort"' in r.text
assert 'id="my-col-chips"' in r.text
assert 'id="my-count"' in r.text
assert 'id="my-reset"' in r.text
# Facettes avec compteurs (démo : 1 issue assignée,
# étiquette « bug »).
assert "Projets/demo (1)" in r.text
assert "bug (1)" in r.text
# Le moteur de filtrage est chargé, versionné.
assert "/static/js/my.js?v=" in r.text
def test_my_rows_carry_filter_attributes(client):
r = client.get("/my")
# Attributs data-* consommés par le moteur client.
assert 'data-column="backlog"' in r.text
assert 'data-search="#1 Tâche un Projets/demo bug"' in r.text
assert 'data-updated="2026-09-02T09:00:00Z"' in r.text
assert 'data-repo="Projets/demo"' in r.text
# Chips de colonnes présentes, avec compteurs.
assert 'data-col="backlog"' in r.text
assert 'data-col=""' in r.text # « Toutes les colonnes »
def test_my_empty_state_present_but_hidden(client):
r = client.get("/my")
assert 'id="my-empty" hidden' in r.text