From 88d25a6df18c675d1eb961d3456a6d05fab86036 Mon Sep 17 00:00:00 2001 From: Anto59290 Date: Thu, 14 Nov 2024 13:44:55 +0100 Subject: [PATCH] =?UTF-8?q?R=C3=A9initialiser=20le=20status=20quand=20chan?= =?UTF-8?q?gement=20d'ON?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Réinitialise le status réglementaire quand un changement d'organisme nuisible est fait afin d'éviter de laisser une valeur fausse. --- sv/static/sv/fichedetection_form.js | 18 ++++++++++------- sv/tests/test_fichedetection_create.py | 28 +++++++++++++++++++++++++- 2 files changed, 38 insertions(+), 8 deletions(-) diff --git a/sv/static/sv/fichedetection_form.js b/sv/static/sv/fichedetection_form.js index 7ee8c26..fcf8fa2 100644 --- a/sv/static/sv/fichedetection_form.js +++ b/sv/static/sv/fichedetection_form.js @@ -64,14 +64,18 @@ document.addEventListener('DOMContentLoaded', function() { }); choices.passedElement.element.addEventListener("choice", (event)=> { - statusToNuisibleId.forEach((line) =>{ - if (line.nuisibleIds.includes(parseInt(event.detail.choice.value))) - { - document.getElementById('statut-reglementaire-input').value=line.statusID + let found = false; + statusToNuisibleId.forEach((status) =>{ + if (status.nuisibleIds.includes(parseInt(event.detail.choice.value))) { + document.getElementById('statut-reglementaire-input').value = status.statusID; document.getElementById('statut-reglementaire-input').dispatchEvent(new Event('change')); + found = true; } }) - + if (found === false){ + document.getElementById('statut-reglementaire-input').value=""; + document.getElementById('statut-reglementaire-input').dispatchEvent(new Event('change')); + } }) }); @@ -309,7 +313,7 @@ document.addEventListener('alpine:init', () => { }) if (!!this.ficheDetection.freeLinksIds) { this.ficheDetection.freeLinksIds.forEach(value => { - freeLinksChoices.setChoiceByValue(value); + freeLinksChoices.setChoiceByValue(value); }); } @@ -608,7 +612,7 @@ document.addEventListener('alpine:init', () => { formData.append('prelevements', JSON.stringify(this.prelevements)); formData.append('action', action); for (var i = 0; i < this.ficheDetection.freeLinksIds.length; i++) { - formData.append('freeLinksIds', this.ficheDetection.freeLinksIds[i]); + formData.append('freeLinksIds', this.ficheDetection.freeLinksIds[i]); } const csrfToken = document.querySelector('input[name="csrfmiddlewaretoken"]').value; diff --git a/sv/tests/test_fichedetection_create.py b/sv/tests/test_fichedetection_create.py index 5f72aa4..eecd5df 100644 --- a/sv/tests/test_fichedetection_create.py +++ b/sv/tests/test_fichedetection_create.py @@ -373,7 +373,7 @@ def test_fiche_detection_status_reglementaire_is_pre_selected( page.goto(f"{live_server.url}{reverse('fiche-detection-creation')}") choice_js_fill(page, "#organisme-nuisible .choices__list--single", "Mon ON", "Mon ON") - expect(form_elements.statut_reglementaire_input).to_contain_text("----") + expect(form_elements.statut_reglementaire_input).to_have_value("2") page.get_by_role("button", name="Enregistrer").click() page.wait_for_timeout(600) @@ -383,6 +383,32 @@ def test_fiche_detection_status_reglementaire_is_pre_selected( assert fiche_detection.statut_reglementaire.code == "OQ" +@pytest.mark.django_db +def test_fiche_detection_status_reglementaire_is_emptied_when_unknown( + live_server, page: Page, form_elements: FicheDetectionFormDomElements, choice_js_fill +): + organisme_nuisible, _ = OrganismeNuisible.objects.get_or_create(code_oepp="OE_XYLEFM") + organisme_nuisible.libelle_court = "Mon ON" + organisme_nuisible.save() + + organisme_nuisible_no_status, _ = OrganismeNuisible.objects.get_or_create(code_oepp="FOO") + organisme_nuisible_no_status.libelle_court = "Pas mon ON" + organisme_nuisible_no_status.save() + + page.goto(f"{live_server.url}{reverse('fiche-detection-creation')}") + choice_js_fill(page, "#organisme-nuisible .choices__list--single", "Mon ON", "Mon ON") + expect(form_elements.statut_reglementaire_input).to_have_value("2") + choice_js_fill(page, "#organisme-nuisible .choices__list--single", "Pas mon ON", "Pas mon ON") + expect(form_elements.statut_reglementaire_input).to_have_value("") + page.get_by_role("button", name="Enregistrer").click() + + page.wait_for_timeout(600) + + fiche_detection = FicheDetection.objects.get() + assert fiche_detection.organisme_nuisible == organisme_nuisible_no_status + assert fiche_detection.statut_reglementaire is None + + def test_prelevements_are_always_linked_to_lieu( live_server, page: Page,