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());
+ }
}