From e59e2e50b37d205b2eaeb62c29b6bd4f225ba48a Mon Sep 17 00:00:00 2001 From: Colin Maudry Date: Fri, 10 Jul 2026 14:20:27 +0200 Subject: [PATCH] =?UTF-8?q?test:=20adapter=20les=20tests=20DataTable=20his?= =?UTF-8?q?toriques=20=C3=A0=20la=20migration=20AG=20Grid=20de=20/tableau?= =?UTF-8?q?=20(#41)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/test_main.py | 17 ++++++++++++++--- tests/test_tableau_hscroll.py | 13 ++++++++++--- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/tests/test_main.py b/tests/test_main.py index 0c9f1b9..0f11f55 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -73,7 +73,13 @@ def test_002_filter_persistence(dash_duo: DashComposite): ) return _filter_input_in_view(dash_duo, filter_input_selector) - for page in ["tableau", "acheteurs/123", "titulaires/345"]: + # /tableau utilise désormais AG Grid (dash-ag-grid) au lieu de dash_table.DataTable ; + # la persistance de ses filtres/colonnes est couverte par persistence=True et + # persisted_props=["filterModel", "columnState"] configurés dans la fabrique + # ag_grid() de src/figures.py, et a été vérifiée manuellement via un navigateur + # réel (Task 12 du plan #41). Une couverture Selenium dédiée à AG Grid pourrait + # être ajoutée ultérieurement. + for page in ["acheteurs/123", "titulaires/345"]: filter_input = open_page_and_check_filter_input() filter_input.send_keys("11") # valeur quelconque, on teste la persistance filter_input.send_keys(Keys.ENTER) @@ -347,13 +353,18 @@ def test_014_get_distance_histogram_all_nulls(): assert isinstance(result, dcc.Graph) -def test_015_tableau_filter_date(dash_duo: DashComposite): +def test_015_org_pages_filter_date(dash_duo: DashComposite): from src.app import app dash_duo.start_server(app) dash_duo.wait_for_text_to_equal(".logo > h1", "colibre", timeout=4) - for page in ["tableau", "acheteurs/123", "titulaires/345"]: + # /tableau utilise désormais AG Grid ; le filtrage de sa colonne date est + # couvert par les tests unitaires de compilation SQL dans + # tests/test_query_ast.py (ex. test_date_range_uses_between) et a été + # vérifié manuellement (Task 12 du plan #41). Une couverture Selenium + # dédiée au filtre de date AG Grid pourrait être ajoutée ultérieurement. + for page in ["acheteurs/123", "titulaires/345"]: dash_duo.wait_for_page(f"{dash_duo.server_url}/{page}") filter_input = '.marches_table th[data-dash-column="dateNotification"] input' filter_cell_result = '.marches_table td[data-dash-column="dateNotification"] p' diff --git a/tests/test_tableau_hscroll.py b/tests/test_tableau_hscroll.py index 8bd9920..e9e0e12 100644 --- a/tests/test_tableau_hscroll.py +++ b/tests/test_tableau_hscroll.py @@ -1,12 +1,19 @@ from dash.testing.composite import DashComposite -def test_tableau_hscroll_bar_present(dash_duo: DashComposite): - """La barre de défilement est injectée et le conteneur scroll horizontalement.""" +def test_marches_table_hscroll_bar_present(dash_duo: DashComposite): + """La barre de défilement est injectée et le conteneur scroll horizontalement. + + Testé via /acheteurs/123 : depuis la migration de /tableau vers AG Grid + (qui gère son propre défilement horizontal nativement), cette page-ci ne + rend plus de dash_table.DataTable. .marches_table (et table_hscroll.js) + reste utilisé par acheteur.py, observatoire.py et titulaire.py, donc ce + comportement reste couvert via une de ces pages. + """ from src.app import app dash_duo.start_server(app) - dash_duo.wait_for_page(f"{dash_duo.server_url}/tableau") + dash_duo.wait_for_page(f"{dash_duo.server_url}/acheteurs/123") dash_duo.wait_for_element(".marches_table", timeout=20) # Barre injectée par table_hscroll.js dash_duo.wait_for_element(".marches_table .dt-hscroll", timeout=10)