From 9765e0dd104de4a580e526cca37afe7832463bf7 Mon Sep 17 00:00:00 2001 From: David Darras <117278497+davdarras@users.noreply.github.com> Date: Mon, 27 May 2024 17:04:44 +0200 Subject: [PATCH] fix: allow empty data when saving diff data/state data (#248) --- pom.xml | 2 +- .../SurveyUnitDataStateDataUpdateInput.java | 1 - queen-domain/pom.xml | 1 - .../service/SurveyUnitApiService.java | 5 +++- .../service/SurveyUnitApiServiceTest.java | 25 +++++++++++++++++-- 5 files changed, 28 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index b1c4ebd9..13bd3841 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ Modules for queen back-office - 4.3.1 + 4.3.2 21 21 diff --git a/queen-application/src/main/java/fr/insee/queen/application/surveyunit/dto/input/SurveyUnitDataStateDataUpdateInput.java b/queen-application/src/main/java/fr/insee/queen/application/surveyunit/dto/input/SurveyUnitDataStateDataUpdateInput.java index 4a43653d..96de4a86 100644 --- a/queen-application/src/main/java/fr/insee/queen/application/surveyunit/dto/input/SurveyUnitDataStateDataUpdateInput.java +++ b/queen-application/src/main/java/fr/insee/queen/application/surveyunit/dto/input/SurveyUnitDataStateDataUpdateInput.java @@ -9,7 +9,6 @@ @Schema(name = "SurveyUnitDataStateDataUpdate") public record SurveyUnitDataStateDataUpdateInput( - @NotNull @Schema(ref = SchemaType.Names.COLLECTED_DATA) @JsonValid(SchemaType.COLLECTED_DATA) ObjectNode data, diff --git a/queen-domain/pom.xml b/queen-domain/pom.xml index 66205aa3..5013fa78 100644 --- a/queen-domain/pom.xml +++ b/queen-domain/pom.xml @@ -56,7 +56,6 @@ - ERROR fr.insee.queen:* diff --git a/queen-domain/src/main/java/fr/insee/queen/domain/surveyunit/service/SurveyUnitApiService.java b/queen-domain/src/main/java/fr/insee/queen/domain/surveyunit/service/SurveyUnitApiService.java index 1ddbf4a5..83888d70 100644 --- a/queen-domain/src/main/java/fr/insee/queen/domain/surveyunit/service/SurveyUnitApiService.java +++ b/queen-domain/src/main/java/fr/insee/queen/domain/surveyunit/service/SurveyUnitApiService.java @@ -109,7 +109,10 @@ public void updateSurveyUnit(SurveyUnit surveyUnit) { @Transactional @Override public void updateSurveyUnit(String surveyUnitId, ObjectNode collectedDataToUpdate, StateData stateData) { - dataService.updateCollectedData(surveyUnitId, collectedDataToUpdate); + if(collectedDataToUpdate != null && ! collectedDataToUpdate.isEmpty()) { + dataService.updateCollectedData(surveyUnitId, collectedDataToUpdate); + } + try { stateDataService.saveStateData(surveyUnitId, stateData); } catch (StateDataInvalidDateException ex) { diff --git a/queen-domain/src/test/java/fr/insee/queen/domain/surveyunit/service/SurveyUnitApiServiceTest.java b/queen-domain/src/test/java/fr/insee/queen/domain/surveyunit/service/SurveyUnitApiServiceTest.java index 6cf3fd4c..978634f0 100644 --- a/queen-domain/src/test/java/fr/insee/queen/domain/surveyunit/service/SurveyUnitApiServiceTest.java +++ b/queen-domain/src/test/java/fr/insee/queen/domain/surveyunit/service/SurveyUnitApiServiceTest.java @@ -15,9 +15,13 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; import org.springframework.cache.CacheManager; import org.springframework.cache.support.NoOpCacheManager; +import java.util.stream.Stream; + import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; @@ -159,12 +163,24 @@ void testUpdate04() { assertThat(surveyUnitFakeDao.getSurveyUnitUpdated()).isEqualTo(surveyUnit); assertThat(stateDataFakeService.getStateDataSaved()).isNull(); } + @ParameterizedTest + @MethodSource("nullOrEmpTyData") + @DisplayName("On updating survey unit, when data is null or empty, don't update data") + void testUpdateDataStateData02(ObjectNode data) { + StateData stateData = new StateData(StateDataType.VALIDATED, 800000L, "5"); + String surveyUnitId = "11"; + surveyUnitApiService.updateSurveyUnit(surveyUnitId, data, stateData); + assertThat(stateDataFakeService.getStateDataSaved()).isEqualTo(stateData); + assertThat(dataFakeService.getDataSaved()).isNull(); + } + @Test @DisplayName("On updating survey unit, when state data is not null, save it") - void testUpdateDataStateData02() { + void testUpdateDataStateData03() { StateData stateData = new StateData(StateDataType.VALIDATED, 800000L, "5"); ObjectNode data = JsonNodeFactory.instance.objectNode(); + data.put("field1", 5); String surveyUnitId = "11"; surveyUnitApiService.updateSurveyUnit(surveyUnitId, data, stateData); assertThat(stateDataFakeService.getStateDataSaved()).isEqualTo(stateData); @@ -173,12 +189,17 @@ void testUpdateDataStateData02() { @Test @DisplayName("On updating survey unit, when state data update throws an invalid date exception, check data is saved ") - void testUpdateDataStateData03() { + void testUpdateDataStateData04() { StateData stateData = new StateData(StateDataType.VALIDATED, 800000L, "5"); ObjectNode data = JsonNodeFactory.instance.objectNode(); + data.put("field1", 5); String surveyUnitId = "11"; stateDataFakeService.setDateInvalid(true); surveyUnitApiService.updateSurveyUnit(surveyUnitId, data, stateData); assertThat(dataFakeService.getDataSaved()).isEqualTo(data); } + + static Stream nullOrEmpTyData() { + return Stream.of(null, JsonNodeFactory.instance.objectNode()); + } }