From 57dbb430cb3eef0f75e4604c5d3e5694dcab99c5 Mon Sep 17 00:00:00 2001
From: OURY Sarah <sarah.oury@soprasteria.com>
Date: Thu, 1 Aug 2024 12:48:31 +0000
Subject: [PATCH] Fix bug discrimminator et cache

---
 CHANGELOG.md                                  |  1 +
 .../infrastructure/config/CacheConfig.java    | 11 ++++++++-
 .../ListenEquipementPhysique.java             |  1 -
 .../repository/DonneesEntreeRepository.java   |  4 ++--
 .../src/main/resources/application.yaml       |  1 +
 .../src/main/resources/schema.sql             | 10 +++++++-
 .../controller/CalculController.java          |  9 ++++++--
 .../service/DonneesEntreesService.java        | 23 ++++++++++++-------
 .../service/DonneesEntreesServiceTest.java    | 19 +++++++--------
 9 files changed, 55 insertions(+), 24 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index cd8753fe..a66c9cd3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,7 @@ Tous les changements de ce projet seront documentés dans ce document.
 
 ## [Non livré]
 
+- Correction bug dans la table ind_indicateur_impact_operation_non_it, ajout de l'attribut date_lot_discrimminator
 - Nettoyage du code : Enlever tous les appels aux anciennes API (impactReseau, impactEquipement, mixelec et typeEquipement), les API restent fonctionnelles mais ne sont plus appelées par les autres composants
 - Nettoyage : Supression des tables, Entities et Repositories plus utilisés (pour MixElectrique, ImpactEquipement, ImpactReseau & TypeEquipement) 
 - Lancer les calculs sur uniquement quelques critères et/ou étapes -> [Issue6](https://gitlab-forge.din.developpement-durable.gouv.fr/pub/numeco/m4g/numecoeval/-/issues/6)
diff --git a/services/api-event-calculs/src/main/java/org/mte/numecoeval/calculs/infrastructure/config/CacheConfig.java b/services/api-event-calculs/src/main/java/org/mte/numecoeval/calculs/infrastructure/config/CacheConfig.java
index 5e182885..90538c3d 100644
--- a/services/api-event-calculs/src/main/java/org/mte/numecoeval/calculs/infrastructure/config/CacheConfig.java
+++ b/services/api-event-calculs/src/main/java/org/mte/numecoeval/calculs/infrastructure/config/CacheConfig.java
@@ -37,4 +37,13 @@ public class CacheConfig {
     public void emptyAllCaches() {
         log.info("Nettoyage de tous les caches internes");
     }
-}
+
+    @CacheEvict(value = {
+            "EtapesFiltrees",
+            "CriteresFiltres",
+    }, allEntries = true)
+    @Scheduled(fixedRateString = "${numecoeval.cache.donnesfiltrees}", timeUnit = TimeUnit.MINUTES)
+    public void emptyDonneesFiltreesCaches() {
+        log.info("Nettoyage des caches d'EtapesFiltrees et CriteresFiltres");
+    }
+}
\ No newline at end of file
diff --git a/services/api-event-calculs/src/main/java/org/mte/numecoeval/calculs/infrastructure/kafkalistener/ListenEquipementPhysique.java b/services/api-event-calculs/src/main/java/org/mte/numecoeval/calculs/infrastructure/kafkalistener/ListenEquipementPhysique.java
index 3a4ed077..7bb761ea 100644
--- a/services/api-event-calculs/src/main/java/org/mte/numecoeval/calculs/infrastructure/kafkalistener/ListenEquipementPhysique.java
+++ b/services/api-event-calculs/src/main/java/org/mte/numecoeval/calculs/infrastructure/kafkalistener/ListenEquipementPhysique.java
@@ -4,7 +4,6 @@ import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.mte.numecoeval.calculs.infrastructure.service.calcul.MainEquipementPhysiqueService;
 import org.mte.numecoeval.topic.data.EquipementPhysiqueDTO;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.kafka.annotation.KafkaListener;
 import org.springframework.stereotype.Component;
 
diff --git a/services/api-event-calculs/src/main/java/org/mte/numecoeval/calculs/infrastructure/repository/DonneesEntreeRepository.java b/services/api-event-calculs/src/main/java/org/mte/numecoeval/calculs/infrastructure/repository/DonneesEntreeRepository.java
index 58e771cf..965c8c4f 100644
--- a/services/api-event-calculs/src/main/java/org/mte/numecoeval/calculs/infrastructure/repository/DonneesEntreeRepository.java
+++ b/services/api-event-calculs/src/main/java/org/mte/numecoeval/calculs/infrastructure/repository/DonneesEntreeRepository.java
@@ -46,7 +46,7 @@ public class DonneesEntreeRepository {
         return result.getFirst();
     }
 
-    @Cacheable("Etapes")
+    @Cacheable("EtapesFiltrees")
     public String findEtapes(String nomLot) {
         List<String> result = new ArrayList<>();
         try (Connection conn = dataSource.getConnection()) {
@@ -72,7 +72,7 @@ public class DonneesEntreeRepository {
         return result.getFirst();
     }
 
-    @Cacheable("Criteres")
+    @Cacheable("CriteresFiltres")
     public String findCriteres(String nomLot) {
         List<String> result = new ArrayList<>();
         try (Connection conn = dataSource.getConnection()) {
diff --git a/services/api-event-calculs/src/main/resources/application.yaml b/services/api-event-calculs/src/main/resources/application.yaml
index 22e10dfe..070760f9 100644
--- a/services/api-event-calculs/src/main/resources/application.yaml
+++ b/services/api-event-calculs/src/main/resources/application.yaml
@@ -42,6 +42,7 @@ numecoeval:
     url: "http://localhost:18080"
   cache:
     ttl: "20"
+    donnesfiltrees: "1"
 
 server:
   port: 18085
diff --git a/services/api-event-calculs/src/main/resources/schema.sql b/services/api-event-calculs/src/main/resources/schema.sql
index b95c0f38..9a7df953 100644
--- a/services/api-event-calculs/src/main/resources/schema.sql
+++ b/services/api-event-calculs/src/main/resources/schema.sql
@@ -104,7 +104,11 @@ CREATE TABLE IF NOT EXISTS ind_indicateur_impact_operation_non_it
     nom_organisation           varchar(255)     NULL,
     nom_source_donnee          varchar(255)     NULL,
     nom_item_non_it            varchar(255)     NULL,
-    qualite                    varchar(255)     NULL
+    qualite                    varchar(255)     NULL,
+    date_lot_discriminator          date            NOT NULL DEFAULT('1970-01-01'),
+    nom_organisation_discriminator  varchar(255)    NOT NULL DEFAULT(''),
+    nom_entite_discriminator        varchar(255)    NOT NULL DEFAULT(''),
+    nom_source_donnee_discriminator varchar(255)    NOT NULL DEFAULT('')
 );
 
 CREATE TABLE IF NOT EXISTS ind_indicateur_impact_messagerie
@@ -158,6 +162,10 @@ ALTER TABLE IF EXISTS ind_indicateur_impact_equipement_physique ADD COLUMN IF NO
 ALTER TABLE IF EXISTS ind_indicateur_impact_application ADD COLUMN IF NOT EXISTS qualite varchar(255)  NULL DEFAULT '';
 ALTER TABLE IF EXISTS ind_indicateur_impact_equipement_virtuel ADD COLUMN IF NOT EXISTS qualite varchar(255)  NULL DEFAULT '';
 ALTER TABLE IF EXISTS ind_indicateur_impact_operation_non_it ADD COLUMN IF NOT EXISTS qualite varchar(255)  NULL DEFAULT '';
+ALTER TABLE IF EXISTS ind_indicateur_impact_operation_non_it ADD COLUMN IF NOT EXISTS date_lot_discriminator date NOT NULL DEFAULT('1970-01-01');
+ALTER TABLE IF EXISTS ind_indicateur_impact_operation_non_it ADD COLUMN IF NOT EXISTS nom_organisation_discriminator varchar(255) NOT NULL DEFAULT('');
+ALTER TABLE IF EXISTS ind_indicateur_impact_operation_non_it ADD COLUMN IF NOT EXISTS nom_entite_discriminator varchar(255) NOT NULL DEFAULT('');
+ALTER TABLE IF EXISTS ind_indicateur_impact_operation_non_it ADD COLUMN IF NOT EXISTS nom_source_donnee_discriminator varchar(255) NOT NULL DEFAULT('');
 
 CREATE INDEX IF NOT EXISTS idx_ind_eq_p__nom_lot_nom_equipement   ON ind_indicateur_impact_equipement_physique (nom_lot, nom_equipement);
 CREATE INDEX IF NOT EXISTS idx_ind_eq_v__nom_lot_nom_equipement   ON ind_indicateur_impact_equipement_virtuel (nom_lot, nom_equipement);
diff --git a/services/api-expositiondonneesentrees/src/main/java/org/mte/numecoeval/expositiondonneesentrees/infrastructure/controller/CalculController.java b/services/api-expositiondonneesentrees/src/main/java/org/mte/numecoeval/expositiondonneesentrees/infrastructure/controller/CalculController.java
index 72c1feff..2a40f112 100644
--- a/services/api-expositiondonneesentrees/src/main/java/org/mte/numecoeval/expositiondonneesentrees/infrastructure/controller/CalculController.java
+++ b/services/api-expositiondonneesentrees/src/main/java/org/mte/numecoeval/expositiondonneesentrees/infrastructure/controller/CalculController.java
@@ -18,6 +18,8 @@ import org.springframework.web.bind.annotation.RestController;
 @RequiredArgsConstructor
 public class CalculController implements CalculsApi {
 
+    public static final String TYPE_CALCUL_REJEU = "rejeu";
+    public static final String TYPE_CALCUL_SOUMISSION = "soumission";
     @Value("${regle-par-defaut-duree-usage}")
     private String defaultDureeUsage;
 
@@ -46,7 +48,7 @@ public class CalculController implements CalculsApi {
         log.info("Soumission de calcul pour nom_lot: {}, dureeUsage: {}, mode: {}, etapes:{}, criteres:{}", demandeCalculRest.getNomLot(), modeDureeUsage, mode, demandeCalculRest.getEtapes(), demandeCalculRest.getCriteres());
         var demandeCalcul = calculRestMapper.toDomain(demandeCalculRest);
 
-        donneesEntreesService.manageDonneesEntrees(demandeCalculRest.getNomLot(), dureeUsage, demandeCalculRest.getEtapes(), demandeCalculRest.getCriteres());
+        donneesEntreesService.manageDonneesEntrees(demandeCalculRest.getNomLot(), dureeUsage, demandeCalculRest.getEtapes(), demandeCalculRest.getCriteres(), TYPE_CALCUL_SOUMISSION);
 
         var soumission = ModeRest.ASYNC == mode ?
                 soumissionCalculPort.soumissionCalcul(demandeCalcul) :
@@ -55,11 +57,14 @@ public class CalculController implements CalculsApi {
         return ResponseEntity.ok(calculRestMapper.toRest(soumission));
     }
 
+
     @Override
     public ResponseEntity<RapportDemandeCalculRest> rejeuCalcul(DemandeCalculRest demandeCalculRest) {
-        log.info("Rejeu de calcul, nom_lot: {}", demandeCalculRest.getNomLot());
+        log.info("Rejeu de calcul, nom_lot: {}, etapes:{}, criteres:{}", demandeCalculRest.getNomLot(), demandeCalculRest.getEtapes(), demandeCalculRest.getCriteres());
         var demandeCalcul = calculRestMapper.toDomain(demandeCalculRest);
 
+        donneesEntreesService.manageDonneesEntrees(demandeCalculRest.getNomLot(), null, demandeCalculRest.getEtapes(), demandeCalculRest.getCriteres(), TYPE_CALCUL_REJEU);
+
         var soumission = soumissionCalculPort.rejeuCalcul(demandeCalcul);
 
         var responseBody = calculRestMapper.toRest(soumission);
diff --git a/services/api-expositiondonneesentrees/src/main/java/org/mte/numecoeval/expositiondonneesentrees/infrastructure/service/DonneesEntreesService.java b/services/api-expositiondonneesentrees/src/main/java/org/mte/numecoeval/expositiondonneesentrees/infrastructure/service/DonneesEntreesService.java
index f793e5af..a5f0ca4f 100644
--- a/services/api-expositiondonneesentrees/src/main/java/org/mte/numecoeval/expositiondonneesentrees/infrastructure/service/DonneesEntreesService.java
+++ b/services/api-expositiondonneesentrees/src/main/java/org/mte/numecoeval/expositiondonneesentrees/infrastructure/service/DonneesEntreesService.java
@@ -14,6 +14,8 @@ import org.springframework.stereotype.Service;
 import java.util.HashSet;
 import java.util.List;
 
+import static org.mte.numecoeval.expositiondonneesentrees.infrastructure.controller.CalculController.TYPE_CALCUL_SOUMISSION;
+
 @Service
 @RequiredArgsConstructor
 public class DonneesEntreesService {
@@ -24,19 +26,20 @@ public class DonneesEntreesService {
     final ReferentielRestClient referentielRestClient;
     final DonneesEntreesRepository donneesEntreesRepository;
 
-    public void manageDonneesEntrees(String nomLot, DureeUsage modeDureeUsage, List<String> etapes, List<String> criteres) {
+    public void manageDonneesEntrees(String nomLot, DureeUsage modeDureeUsage, List<String> etapes, List<String> criteres, String typeCalcul) {
         var donneeEntreeEntity = donneesEntreesRepository.findByNomLot(nomLot).getFirst();
-        donneeEntreeEntity = enrichi(donneeEntreeEntity, modeDureeUsage, etapes, criteres);
+        donneeEntreeEntity = enrichi(donneeEntreeEntity, modeDureeUsage, etapes, criteres, typeCalcul);
         donneesEntreesRepository.save(donneeEntreeEntity);
     }
 
-    private DonneesEntreesEntity enrichi(DonneesEntreesEntity donneeEntreeEntity, DureeUsage dureeUsage, List<String> etapes, List<String> criteres) {
-        var modeDureeUsage = dureeUsage == null ? DureeUsage.fromValue(defaultDureeUsage) : dureeUsage;
-        if (DureeUsage.REEL != modeDureeUsage) {
-            modeDureeUsage = DureeUsage.FIXE;
+    private DonneesEntreesEntity enrichi(DonneesEntreesEntity donneeEntreeEntity, DureeUsage dureeUsage, List<String> etapes, List<String> criteres, String typeCalcul) {
+        if (typeCalcul.equals(TYPE_CALCUL_SOUMISSION)) {
+            var modeDureeUsage = dureeUsage == null ? DureeUsage.fromValue(defaultDureeUsage) : dureeUsage;
+            if (DureeUsage.REEL != modeDureeUsage) {
+                modeDureeUsage = DureeUsage.FIXE;
+            }
+            donneeEntreeEntity.setDureeUsage(String.valueOf(modeDureeUsage));
         }
-        donneeEntreeEntity.setDureeUsage(String.valueOf(modeDureeUsage));
-
         if (etapes != null) {
             var allEtapes = referentielRestClient.getAllEtapes().stream().map(EtapeDTO::getCode).toList();
             if (!new HashSet<>(allEtapes).containsAll(etapes)) {
@@ -45,6 +48,8 @@ public class DonneesEntreesService {
                 );
             }
             donneeEntreeEntity.setEtapes(String.join("##", etapes));
+        } else {
+            donneeEntreeEntity.setEtapes(null);
         }
         if (criteres != null) {
             var allCriteres = referentielRestClient.getAllCriteres().stream().map(CritereDTO::getNomCritere).toList();
@@ -54,6 +59,8 @@ public class DonneesEntreesService {
                 );
             }
             donneeEntreeEntity.setCriteres(String.join("##", criteres));
+        } else {
+            donneeEntreeEntity.setCriteres(null);
         }
         return donneeEntreeEntity;
     }
diff --git a/services/api-expositiondonneesentrees/src/test/java/org/mte/numecoeval/expositiondonneesentrees/infrastructure/service/DonneesEntreesServiceTest.java b/services/api-expositiondonneesentrees/src/test/java/org/mte/numecoeval/expositiondonneesentrees/infrastructure/service/DonneesEntreesServiceTest.java
index cd2bf078..76ed19eb 100644
--- a/services/api-expositiondonneesentrees/src/test/java/org/mte/numecoeval/expositiondonneesentrees/infrastructure/service/DonneesEntreesServiceTest.java
+++ b/services/api-expositiondonneesentrees/src/test/java/org/mte/numecoeval/expositiondonneesentrees/infrastructure/service/DonneesEntreesServiceTest.java
@@ -27,6 +27,7 @@ import java.util.List;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertThrows;
+import static org.mte.numecoeval.expositiondonneesentrees.infrastructure.controller.CalculController.TYPE_CALCUL_SOUMISSION;
 
 @ExtendWith({SpringExtension.class})
 @ContextConfiguration(initializers = ConfigDataApplicationContextInitializer.class)
@@ -73,63 +74,63 @@ public class DonneesEntreesServiceTest {
     @Test
     void enrichiDonneesEntrees_with_dureeUsageNull() {
         DonneesEntreesEntity donneeEntreeEntity = new DonneesEntreesEntity(Long.parseLong("10000"), Long.parseLong("10"), Long.parseLong("20"), Long.parseLong("4"), Long.parseLong("4"), Long.parseLong("4"), null, null, null);
-        DonneesEntreesEntity actual = ReflectionTestUtils.invokeMethod(donneesEntreesService, "enrichi", donneeEntreeEntity, null, null, null);
+        DonneesEntreesEntity actual = ReflectionTestUtils.invokeMethod(donneesEntreesService, "enrichi", donneeEntreeEntity, null, null, null, TYPE_CALCUL_SOUMISSION);
         assertEquals("FIXE", actual.getDureeUsage());
     }
 
     @Test
     void enrichiDonneesEntrees_with_dureeUsageFixe() {
         DonneesEntreesEntity donneeEntreeEntity = new DonneesEntreesEntity(Long.parseLong("10000"), Long.parseLong("10"), Long.parseLong("20"), Long.parseLong("4"), Long.parseLong("4"), Long.parseLong("4"), null, null, null);
-        DonneesEntreesEntity actual = ReflectionTestUtils.invokeMethod(donneesEntreesService, "enrichi", donneeEntreeEntity, DureeUsage.valueOf("FIXE"), null, null);
+        DonneesEntreesEntity actual = ReflectionTestUtils.invokeMethod(donneesEntreesService, "enrichi", donneeEntreeEntity, DureeUsage.valueOf("FIXE"), null, null, TYPE_CALCUL_SOUMISSION);
         assertEquals("FIXE", actual.getDureeUsage());
     }
 
     @Test
     void enrichiDonneesEntrees_with_dureeUsageReel() {
         DonneesEntreesEntity donneeEntreeEntity = new DonneesEntreesEntity(Long.parseLong("10000"), Long.parseLong("10"), Long.parseLong("20"), Long.parseLong("4"), Long.parseLong("4"), Long.parseLong("4"), null, null, null);
-        DonneesEntreesEntity actual = ReflectionTestUtils.invokeMethod(donneesEntreesService, "enrichi", donneeEntreeEntity, DureeUsage.valueOf("REEL"), null, null);
+        DonneesEntreesEntity actual = ReflectionTestUtils.invokeMethod(donneesEntreesService, "enrichi", donneeEntreeEntity, DureeUsage.valueOf("REEL"), null, null, TYPE_CALCUL_SOUMISSION);
         assertEquals("REEL", actual.getDureeUsage());
     }
 
     @Test
     void enrichiDonneesEntrees_with_etapesFiltree_shouldFilter() {
         DonneesEntreesEntity donneeEntreeEntity = new DonneesEntreesEntity(Long.parseLong("10000"), Long.parseLong("10"), Long.parseLong("20"), Long.parseLong("4"), Long.parseLong("4"), Long.parseLong("4"), null, null, null);
-        DonneesEntreesEntity actual = ReflectionTestUtils.invokeMethod(donneesEntreesService, "enrichi", donneeEntreeEntity, DureeUsage.valueOf("FIXE"), List.of("UTILISATION", "FABRICATION"), List.of());
+        DonneesEntreesEntity actual = ReflectionTestUtils.invokeMethod(donneesEntreesService, "enrichi", donneeEntreeEntity, DureeUsage.valueOf("FIXE"), List.of("UTILISATION", "FABRICATION"), List.of(), TYPE_CALCUL_SOUMISSION);
         assertEquals("UTILISATION##FABRICATION", actual.getEtapes());
     }
 
     @Test
     void enrichiDonneesEntrees_with_etapesFiltreeNull_shouldReturnNull() {
         DonneesEntreesEntity donneeEntreeEntity = new DonneesEntreesEntity(Long.parseLong("10000"), Long.parseLong("10"), Long.parseLong("20"), Long.parseLong("4"), Long.parseLong("4"), Long.parseLong("4"), null, null, null);
-        DonneesEntreesEntity actual = ReflectionTestUtils.invokeMethod(donneesEntreesService, "enrichi", donneeEntreeEntity, DureeUsage.valueOf("FIXE"), null, List.of());
+        DonneesEntreesEntity actual = ReflectionTestUtils.invokeMethod(donneesEntreesService, "enrichi", donneeEntreeEntity, DureeUsage.valueOf("FIXE"), null, List.of(), TYPE_CALCUL_SOUMISSION);
         Assertions.assertNull(actual.getEtapes());
     }
 
     @Test
     void enrichiDonneesEntrees_with_etapeFiltreeNotInReferentiel_shouldThrowError() {
         DonneesEntreesEntity donneeEntreeEntity = new DonneesEntreesEntity(Long.parseLong("10000"), Long.parseLong("10"), Long.parseLong("20"), Long.parseLong("4"), Long.parseLong("4"), Long.parseLong("4"), null, null, null);
-        var exception = assertThrows(ValidationException.class, () -> ReflectionTestUtils.invokeMethod(donneesEntreesService, "enrichi", donneeEntreeEntity, DureeUsage.valueOf("FIXE"), List.of("FAB"), List.of()));
+        var exception = assertThrows(ValidationException.class, () -> ReflectionTestUtils.invokeMethod(donneesEntreesService, "enrichi", donneeEntreeEntity, DureeUsage.valueOf("FIXE"), List.of("FAB"), List.of(), TYPE_CALCUL_SOUMISSION));
         assertEquals("La liste d'étapes n'est pas valide, elle doit être comprise dans: [UTILISATION, FABRICATION, DISTRIBUTION]", exception.getErreur());
     }
 
     @Test
     void enrichiDonneesEntrees_with_criteresFiltree_shouldFilter() {
         DonneesEntreesEntity donneeEntreeEntity = new DonneesEntreesEntity(Long.parseLong("10000"), Long.parseLong("10"), Long.parseLong("20"), Long.parseLong("4"), Long.parseLong("4"), Long.parseLong("4"), null, null, null);
-        DonneesEntreesEntity actual = ReflectionTestUtils.invokeMethod(donneesEntreesService, "enrichi", donneeEntreeEntity, DureeUsage.valueOf("FIXE"), List.of(), List.of("Acidification", "Ionising radiation", "Climate change"));
+        DonneesEntreesEntity actual = ReflectionTestUtils.invokeMethod(donneesEntreesService, "enrichi", donneeEntreeEntity, DureeUsage.valueOf("FIXE"), List.of(), List.of("Acidification", "Ionising radiation", "Climate change"), TYPE_CALCUL_SOUMISSION);
         assertEquals("Acidification##Ionising radiation##Climate change", actual.getCriteres());
     }
 
     @Test
     void enrichiDonneesEntrees_with_criteresFiltreeNull_shouldReturnNull() {
         DonneesEntreesEntity donneeEntreeEntity = new DonneesEntreesEntity(Long.parseLong("10000"), Long.parseLong("10"), Long.parseLong("20"), Long.parseLong("4"), Long.parseLong("4"), Long.parseLong("4"), null, null, null);
-        DonneesEntreesEntity actual = ReflectionTestUtils.invokeMethod(donneesEntreesService, "enrichi", donneeEntreeEntity, DureeUsage.valueOf("FIXE"), null, null);
+        DonneesEntreesEntity actual = ReflectionTestUtils.invokeMethod(donneesEntreesService, "enrichi", donneeEntreeEntity, DureeUsage.valueOf("FIXE"), null, null, TYPE_CALCUL_SOUMISSION);
         Assertions.assertNull(actual.getCriteres());
     }
 
     @Test
     void enrichiDonneesEntrees_with_critereFiltreeNotInReferentiel_shouldThrowError() {
         DonneesEntreesEntity donneeEntreeEntity = new DonneesEntreesEntity(Long.parseLong("10000"), Long.parseLong("10"), Long.parseLong("20"), Long.parseLong("4"), Long.parseLong("4"), Long.parseLong("4"), null, null, null);
-        var exception = assertThrows(ValidationException.class, () -> ReflectionTestUtils.invokeMethod(donneesEntreesService, "enrichi", donneeEntreeEntity, DureeUsage.valueOf("FIXE"), null, List.of("CLIMATE CHANGE")));
+        var exception = assertThrows(ValidationException.class, () -> ReflectionTestUtils.invokeMethod(donneesEntreesService, "enrichi", donneeEntreeEntity, DureeUsage.valueOf("FIXE"), null, List.of("CLIMATE CHANGE"), TYPE_CALCUL_SOUMISSION));
         Assertions.assertEquals("La liste de critères n'est pas valide, elle doit être comprise dans: [Climate change, Particulate matter and respiratory inorganics, Ionising radiation, Acidification]", exception.getErreur());
     }
 }
-- 
GitLab