From e9a0125817d9ea4a2926eec58831429b8ced367b Mon Sep 17 00:00:00 2001 From: alan Date: Wed, 6 Nov 2024 14:29:57 +0100 Subject: [PATCH] =?UTF-8?q?Ajout=20de=20tests=20de=20performance=20sur=20l?= =?UTF-8?q?es=20deux=20formulaires=20cr=C3=A9ation/modification=20d'une=20?= =?UTF-8?q?fiche=20zone=20d=C3=A9limit=C3=A9e=20pour=20valider=20le=20fix.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...test_fichezonedelimitee_add_performance.py | 32 +++++++++++++++++++ ...fichezonedelimitee_detail_performances.py} | 0 ...t_fichezonedelimitee_update_performance.py | 31 ++++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 sv/tests/test_fichezonedelimitee_add_performance.py rename sv/tests/{test_fichezonedelimitee_performances.py => test_fichezonedelimitee_detail_performances.py} (100%) create mode 100644 sv/tests/test_fichezonedelimitee_update_performance.py diff --git a/sv/tests/test_fichezonedelimitee_add_performance.py b/sv/tests/test_fichezonedelimitee_add_performance.py new file mode 100644 index 0000000..a571ea9 --- /dev/null +++ b/sv/tests/test_fichezonedelimitee_add_performance.py @@ -0,0 +1,32 @@ +from django.urls import reverse + +from model_bakery import baker + +from sv.forms import RattachementChoices +from sv.models import Etat, OrganismeNuisible, FicheDetection + +BASE_NUM_QUERIES = 7 + + +def test_add_fiche_zone_delimitee_form_with_multiple_existing_fiche_detection( + client, django_assert_num_queries, mocked_authentification_user +): + """Vérifie que le nombre de requêtes SQL générées lors du chargement du formulaire de création d'une zone délimitée reste constant, + quel que soit le nombre de fiches de détection affichées dans les champs hors zone infestée et zone infestée""" + organisme_nuisible = baker.make(OrganismeNuisible) + etat = Etat.objects.get(id=Etat.get_etat_initial()) + detections = baker.make( + FicheDetection, + _fill_optional=True, + etat=etat, + createur=mocked_authentification_user.agent.structure, + hors_zone_infestee=None, + zone_infestee=None, + organisme_nuisible=organisme_nuisible, + _quantity=3, + ) + url = f"{reverse('fiche-zone-delimitee-creation')}?fiche_detection_id={detections[0].pk}&rattachement={RattachementChoices.HORS_ZONE_INFESTEE}" + client.get(url) + + with django_assert_num_queries(BASE_NUM_QUERIES): + client.get(url) diff --git a/sv/tests/test_fichezonedelimitee_performances.py b/sv/tests/test_fichezonedelimitee_detail_performances.py similarity index 100% rename from sv/tests/test_fichezonedelimitee_performances.py rename to sv/tests/test_fichezonedelimitee_detail_performances.py diff --git a/sv/tests/test_fichezonedelimitee_update_performance.py b/sv/tests/test_fichezonedelimitee_update_performance.py new file mode 100644 index 0000000..e5fde01 --- /dev/null +++ b/sv/tests/test_fichezonedelimitee_update_performance.py @@ -0,0 +1,31 @@ +from model_bakery import baker + +from sv.models import Etat, OrganismeNuisible, FicheDetection + +BASE_NUM_QUERIES = 10 + + +def test_update_fiche_zone_delimitee_form_with_multiple_existing_fiche_detection( + client, django_assert_num_queries, mocked_authentification_user, fiche_zone_bakery +): + """Vérifie que le nombre de requêtes SQL générées lors du chargement du formulaire de modification d'une zone délimitée reste constant, + quel que soit le nombre de fiches de détection affichées dans les champs hors zone infestée et zone infestée""" + organisme_nuisible = baker.make(OrganismeNuisible) + etat = Etat.objects.get(id=Etat.get_etat_initial()) + baker.make( + FicheDetection, + _fill_optional=True, + etat=etat, + createur=mocked_authentification_user.agent.structure, + hors_zone_infestee=None, + zone_infestee=None, + organisme_nuisible=organisme_nuisible, + _quantity=3, + ) + fiche_zone_delimitee = fiche_zone_bakery() + fiche_zone_delimitee.organisme_nuisible = organisme_nuisible + fiche_zone_delimitee.save() + client.get(fiche_zone_delimitee.get_update_url()) + + with django_assert_num_queries(BASE_NUM_QUERIES): + client.get(fiche_zone_delimitee.get_update_url())