From 4feac7c35ecfb8a0f021ebe39549d5cdbf7e970a Mon Sep 17 00:00:00 2001 From: alan Date: Tue, 18 Feb 2025 23:30:12 +0100 Subject: [PATCH] =?UTF-8?q?Ajouter=20un=20bouton=20annuler=20dans=20la=20p?= =?UTF-8?q?age=20de=20cr=C3=A9ation=20d=E2=80=99une=20fiche=20d=C3=A9tecti?= =?UTF-8?q?on?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sv/static/sv/evenement_details.js | 1 + sv/static/sv/fichedetection_form.js | 6 +++++ sv/templates/sv/evenement_detail.html | 2 +- sv/templates/sv/fichedetection_form.html | 2 +- sv/tests/test_fichedetection_form.py | 30 ++++++++++++++++++------ sv/tests/test_utils.py | 4 ++-- 6 files changed, 34 insertions(+), 11 deletions(-) diff --git a/sv/static/sv/evenement_details.js b/sv/static/sv/evenement_details.js index 88f3548b..a83d212a 100644 --- a/sv/static/sv/evenement_details.js +++ b/sv/static/sv/evenement_details.js @@ -29,6 +29,7 @@ document.addEventListener('DOMContentLoaded', function() { element.addEventListener('dsfr.disclose', event=>{ const tabId = event.target.getAttribute("id").replace("tabpanel-", "").replace("-panel", "") showOnlyActionsForDetection(tabId) + window.history.pushState({}, '', `?detection=${tabId}`); }) }) diff --git a/sv/static/sv/fichedetection_form.js b/sv/static/sv/fichedetection_form.js index 770048d3..049ff2d5 100644 --- a/sv/static/sv/fichedetection_form.js +++ b/sv/static/sv/fichedetection_form.js @@ -30,7 +30,13 @@ function hasStatusToOrganismeNuisibleData() { } document.addEventListener('DOMContentLoaded', function() { + document.getElementById("cancel-link").addEventListener("click", (event) => { + event.preventDefault(); + window.location = document.referrer; + }); + if (hasStatusToOrganismeNuisibleData()) { setUpOrganismeNuisible(); } + }); diff --git a/sv/templates/sv/evenement_detail.html b/sv/templates/sv/evenement_detail.html index 0a3ea13c..ac86f01c 100644 --- a/sv/templates/sv/evenement_detail.html +++ b/sv/templates/sv/evenement_detail.html @@ -125,7 +125,7 @@

Événement {% if evenement.numero %}{{ evenement.numero {% endfor %}
  • - + Ajouter une détection
  • diff --git a/sv/templates/sv/fichedetection_form.html b/sv/templates/sv/fichedetection_form.html index cd1b4956..4bfcb607 100644 --- a/sv/templates/sv/fichedetection_form.html +++ b/sv/templates/sv/fichedetection_form.html @@ -44,10 +44,10 @@

    {% endif %} + Annuler {% if is_creation %} {% else %} - Annuler {% endif %}

    diff --git a/sv/tests/test_fichedetection_form.py b/sv/tests/test_fichedetection_form.py index aa2fe9ef..31bf3809 100644 --- a/sv/tests/test_fichedetection_form.py +++ b/sv/tests/test_fichedetection_form.py @@ -1,12 +1,12 @@ +import re + import pytest from playwright.sync_api import Page, expect from django.urls import reverse from .test_utils import FicheDetectionFormDomElements, LieuFormDomElements, PrelevementFormDomElements -from ..models import ( - StructurePreleveuse, - Prelevement, -) +from ..factories import EvenementFactory, FicheDetectionFactory +from ..models import StructurePreleveuse, Prelevement from sv.constants import STRUCTURES_PRELEVEUSES @@ -91,10 +91,12 @@ def test_close_button_of_add_lieu_form_modal(live_server, page: Page, form_eleme expect(page.get_by_role("dialog")).to_be_hidden() -def test_cancel_button_of_add_lieu_form_modal(live_server, page: Page, form_elements: FicheDetectionFormDomElements): +def test_cancel_button_of_add_lieu_form_modal( + live_server, page: Page, form_elements: FicheDetectionFormDomElements, lieu_form_elements: LieuFormDomElements +): """Test que le bouton Annuler ferme la modal d'ajout d'un lieu""" form_elements.add_lieu_btn.click() - page.get_by_role("link", name="Annuler").click() + lieu_form_elements.cancel_btn.click() expect(page.get_by_role("dialog")).to_be_hidden() @@ -424,7 +426,7 @@ def test_add_lieu_form_is_empty_after_close_edit_form_with_cancel_btn_without_sa _add_new_lieu(page, form_elements, lieu_form_elements, choice_js_fill) page.get_by_role("button", name="Modifier le lieu").click() - page.get_by_role("link", name="Annuler").click() + page.get_by_label("Modifier le lieu").get_by_role("link", name="Annuler").click() form_elements.add_lieu_btn.click() _check_add_lieu_form_fields_are_empty(page, lieu_form_elements) @@ -652,3 +654,17 @@ def test_prelevement_resultat_card( prelevement_form_elements.resultat_input(Prelevement.Resultat.NON_CONCLUSIF).click() prelevement_form_elements.save_btn.click() expect(page.locator("#prelevements-list")).to_contain_text("NON CONCLUSIF") + + +@pytest.mark.parametrize("action_name", ["Ajouter une détection", "Modifier"]) +def test_return_to_correct_detection_after_creation_or_update(live_server, page: Page, action_name): + evenement = EvenementFactory() + _, detection_2, _ = FicheDetectionFactory.create_batch(3, evenement=evenement) + + page.goto(f"{live_server.url}{evenement.get_absolute_url()}?detection={detection_2.pk}") + + page.get_by_role("link", name=action_name).click() + page.get_by_role("link", name="Annuler").click() + + expect(page.get_by_role("tab", name=f"{detection_2.numero}")).to_be_visible() + expect(page.get_by_role("tab", name=f"{detection_2.numero}")).to_have_class(re.compile(r"(^|\s)selected($|\s)")) diff --git a/sv/tests/test_utils.py b/sv/tests/test_utils.py index be017963..cfeb4829 100644 --- a/sv/tests/test_utils.py +++ b/sv/tests/test_utils.py @@ -179,7 +179,7 @@ def close_btn(self) -> Locator: @property def cancel_btn(self) -> Locator: - return self.page.get_by_role("link", name="Annuler") + return self.page.locator('[id^="modal-add-lieu-"][open="true"]').get_by_role("link", name="Annuler") @property def title(self) -> Locator: @@ -294,7 +294,7 @@ def close_btn(self) -> Locator: @property def cancel_btn(self) -> Locator: - return self.page.get_by_role("link", name="Annuler") + return self.page.locator('[id^="modal-add-edit-prelevement-"][open="true"]').get_by_role("link", name="Annuler") @property def save_btn(self) -> Locator: