Skip to content

Commit 3639846

Browse files
committed
test: validation date time KO test
1 parent 5085be9 commit 3639846

File tree

1 file changed

+100
-15
lines changed

1 file changed

+100
-15
lines changed

src/test/java/fr/insee/genesis/domain/service/rawdata/RawResponseServiceUnitTest.java

Lines changed: 100 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.mockito.ArgumentCaptor;
2828

2929
import java.time.LocalDateTime;
30+
import java.time.format.DateTimeFormatter;
3031
import java.util.ArrayList;
3132
import java.util.Collections;
3233
import java.util.HashMap;
@@ -49,7 +50,7 @@ class RawResponseServiceUnitTest {
4950

5051
private ArgumentCaptor<List<SurveyUnitModel>> surveyUnitModelsCaptor;
5152

52-
private LocalDateTime validationDate;
53+
private static final String TEST_VALIDATION_DATE = "2025-11-11T06:00:00Z";
5354

5455
@BeforeEach
5556
@SuppressWarnings("unchecked")
@@ -79,6 +80,7 @@ void init() {
7980
@DisplayName("Non regression tests of #22875 : validation date and questionnaire state in processed responses")
8081
class ValidationDateAndQuestionnaireStateTests{
8182
@ParameterizedTest
83+
@DisplayName("Process by collection instrument id OK test")
8284
@EnumSource(RawResponseDto.QuestionnaireStateEnum.class)
8385
@SneakyThrows
8486
void processRawResponses_byCollectionInstrumentId_validation_date_questionnaire_state_test(
@@ -98,6 +100,7 @@ void processRawResponses_byCollectionInstrumentId_validation_date_questionnaire_
98100

99101
@ParameterizedTest
100102
@EnumSource(RawResponseDto.QuestionnaireStateEnum.class)
103+
@DisplayName("Process by collection instrument id and interrogation id OK test")
101104
@SneakyThrows
102105
void processRawResponses_byCollectionInstrumentIdAndInterrogationList_validation_date_questionnaire_state_test(
103106
RawResponseDto.QuestionnaireStateEnum questionnaireState
@@ -120,11 +123,10 @@ void processRawResponses_byCollectionInstrumentIdAndInterrogationList_validation
120123
@SneakyThrows
121124
private void processRawResponses_given(RawResponseDto.QuestionnaireStateEnum questionnaireState){
122125
VariablesMap variablesMap = new VariablesMap();
123-
//TODO if the bug is caused by BPM, put variables into it to emulate fix
124126
MetadataModel metadataModel = new MetadataModel();
125127
metadataModel.setVariables(variablesMap);
126-
validationDate = questionnaireState.equals(RawResponseDto.QuestionnaireStateEnum.FINISHED) ?
127-
LocalDateTime.now() : null;
128+
String validationDate = questionnaireState.equals(RawResponseDto.QuestionnaireStateEnum.FINISHED) ?
129+
TEST_VALIDATION_DATE : null;
128130

129131
List<RawResponse> rawResponses = new ArrayList<>();
130132
RawResponse rawResponse = new RawResponse(
@@ -149,19 +151,24 @@ private void processRawResponses_given(RawResponseDto.QuestionnaireStateEnum que
149151

150152
//Mocks behaviour
151153
doReturn(Collections.singletonList(Mode.WEB)).when(controllerUtils).getModesList(any(),any());
152-
doReturn(Set.of(TestConstants.DEFAULT_INTERROGATION_ID)).when(rawResponsePersistencePort).findUnprocessedInterrogationIdsByCollectionInstrumentId(any());
154+
doReturn(Set.of(TestConstants.DEFAULT_INTERROGATION_ID))
155+
.when(rawResponsePersistencePort).findUnprocessedInterrogationIdsByCollectionInstrumentId(any());
153156
doReturn(metadataModel).when(metadataService).loadAndSaveIfNotExists(any(), any(), any(), any(), any());
154157
doReturn(rawResponses).when(rawResponsePersistencePort).findRawResponses(any(), any(), any());
155158
}
156159
private void processRawResponses_then(RawResponseDto.QuestionnaireStateEnum questionnaireState,
157160
List<SurveyUnitModel> createdModels) {
158161
Assertions.assertThat(createdModels).hasSize(1);
159-
Assertions.assertThat(createdModels.getFirst().getValidationDate()).isEqualTo(validationDate);
162+
Assertions.assertThat(createdModels.getFirst().getValidationDate()).isEqualTo(
163+
LocalDateTime.parse(TEST_VALIDATION_DATE, DateTimeFormatter.ISO_OFFSET_DATE_TIME)
164+
);
160165
Assertions.assertThat(createdModels.getFirst().getQuestionnaireState()).isEqualTo(questionnaireState);
161166
}
162167

163-
//Non blocking exception tests
168+
//Non-blocking exception tests
169+
//Invalid questionnaire state
164170
@Test
171+
@DisplayName("Invalid questionnaireState test (process by collection id)")
165172
@SneakyThrows
166173
void processRawResponses_byCollectionInstrumentId_invalid_questionnaire_state_test() {
167174
//GIVEN
@@ -177,9 +184,10 @@ void processRawResponses_byCollectionInstrumentId_invalid_questionnaire_state_te
177184
List<SurveyUnitModel> createdModels = surveyUnitModelsCaptor.getValue();
178185

179186
//THEN
180-
processRawResponses_then_validation_date_null(createdModels);
187+
processRawResponses_then_questionnaire_state_null(createdModels);
181188
}
182189
@Test
190+
@DisplayName("Invalid questionnaireState test (process by collection id and interrogation id list)")
183191
@SneakyThrows
184192
void processRawResponses_byCollectionInstrumentIdAndInterrogationList_invalid_questionnaire_state_test() {
185193
//GIVEN
@@ -193,15 +201,13 @@ void processRawResponses_byCollectionInstrumentIdAndInterrogationList_invalid_qu
193201
List<SurveyUnitModel> createdModels = surveyUnitModelsCaptor.getValue();
194202

195203
//THEN
196-
processRawResponses_then_validation_date_null(createdModels);
204+
processRawResponses_then_questionnaire_state_null(createdModels);
197205
}
198-
199206
@SneakyThrows
200207
private void processRawResponses_given_invalid_questionnaire_state(){
201208
VariablesMap variablesMap = new VariablesMap();
202209
MetadataModel metadataModel = new MetadataModel();
203210
metadataModel.setVariables(variablesMap);
204-
validationDate = LocalDateTime.now();
205211

206212
List<RawResponse> rawResponses = new ArrayList<>();
207213
RawResponse rawResponse = new RawResponse(
@@ -213,7 +219,7 @@ private void processRawResponses_given_invalid_questionnaire_state(){
213219
LocalDateTime.now(),
214220
null
215221
);
216-
rawResponse.payload().put("validationDate", validationDate);
222+
rawResponse.payload().put("validationDate", TEST_VALIDATION_DATE);
217223
rawResponse.payload().put("questionnaireState", "not a questionnaire state");
218224
rawResponse.payload().put("usualSurveyUnitId", TestConstants.DEFAULT_SURVEY_UNIT_ID);
219225
rawResponse.payload().put("majorModelVersion", 2);
@@ -226,14 +232,93 @@ private void processRawResponses_given_invalid_questionnaire_state(){
226232

227233
//Mocks behaviour
228234
doReturn(Collections.singletonList(Mode.WEB)).when(controllerUtils).getModesList(any(),any());
229-
doReturn(Set.of(TestConstants.DEFAULT_INTERROGATION_ID)).when(rawResponsePersistencePort).findUnprocessedInterrogationIdsByCollectionInstrumentId(any());
235+
doReturn(Set.of(TestConstants.DEFAULT_INTERROGATION_ID))
236+
.when(rawResponsePersistencePort).findUnprocessedInterrogationIdsByCollectionInstrumentId(any());
230237
doReturn(metadataModel).when(metadataService).loadAndSaveIfNotExists(any(), any(), any(), any(), any());
231238
doReturn(rawResponses).when(rawResponsePersistencePort).findRawResponses(any(), any(), any());
232239
}
233-
private void processRawResponses_then_validation_date_null(List<SurveyUnitModel> createdModels){
240+
private void processRawResponses_then_questionnaire_state_null(List<SurveyUnitModel> createdModels){
234241
Assertions.assertThat(createdModels).hasSize(1);
235-
Assertions.assertThat(createdModels.getFirst().getValidationDate()).isEqualTo(validationDate);
236242
Assertions.assertThat(createdModels.getFirst().getQuestionnaireState()).isNull();
237243
}
244+
245+
//Invalid validationDate
246+
@Test
247+
@DisplayName("Invalid validationDate test (process by collection id)")
248+
@SneakyThrows
249+
void processRawResponses_byCollectionId_invalid_validation_date_test(){
250+
//GIVEN
251+
processRawResponses_given_invalid_validation_date();
252+
253+
//WHEN
254+
rawResponseService.processRawResponses(
255+
TestConstants.DEFAULT_COLLECTION_INSTRUMENT_ID
256+
);
257+
verify(surveyUnitService).saveSurveyUnits(surveyUnitModelsCaptor.capture());
258+
List<SurveyUnitModel> createdModels = surveyUnitModelsCaptor.getValue();
259+
260+
//THEN
261+
processRawResponses_then_validation_date_null(createdModels);
262+
}
263+
@Test
264+
@DisplayName("Invalid validationDate test (process by collection id and interrogation id list)")
265+
@SneakyThrows
266+
void processRawResponses_byCollectionIdAndInterrogationIds_invalid_validation_date_test(){
267+
//GIVEN
268+
processRawResponses_given_invalid_validation_date();
269+
270+
//WHEN
271+
rawResponseService.processRawResponses(
272+
TestConstants.DEFAULT_COLLECTION_INSTRUMENT_ID,
273+
Collections.singletonList(TestConstants.DEFAULT_INTERROGATION_ID),
274+
new ArrayList<>()
275+
);
276+
verify(surveyUnitService).saveSurveyUnits(surveyUnitModelsCaptor.capture());
277+
List<SurveyUnitModel> createdModels = surveyUnitModelsCaptor.getValue();
278+
279+
//THEN
280+
processRawResponses_then_validation_date_null(createdModels);
281+
}
282+
283+
@SneakyThrows
284+
private void processRawResponses_given_invalid_validation_date(){
285+
VariablesMap variablesMap = new VariablesMap();
286+
MetadataModel metadataModel = new MetadataModel();
287+
metadataModel.setVariables(variablesMap);
288+
289+
List<RawResponse> rawResponses = new ArrayList<>();
290+
RawResponse rawResponse = new RawResponse(
291+
null,
292+
TestConstants.DEFAULT_INTERROGATION_ID,
293+
TestConstants.DEFAULT_COLLECTION_INSTRUMENT_ID,
294+
Mode.WEB,
295+
new HashMap<>(),
296+
LocalDateTime.now(),
297+
null
298+
);
299+
rawResponse.payload().put("validationDate", "not a validation date");
300+
rawResponse.payload().put("questionnaireState", RawResponseDto.QuestionnaireStateEnum.FINISHED);
301+
rawResponse.payload().put("usualSurveyUnitId", TestConstants.DEFAULT_SURVEY_UNIT_ID);
302+
rawResponse.payload().put("majorModelVersion", 2);
303+
Map<String, Map<String, Map<String, String>>> dataMap = new HashMap<>();
304+
dataMap.put("COLLECTED", new HashMap<>());
305+
dataMap.get("COLLECTED").put("VAR1", new HashMap<>());
306+
dataMap.get("COLLECTED").get("VAR1").put("COLLECTED", "value");
307+
rawResponse.payload().put("data", dataMap);
308+
rawResponses.add(rawResponse);
309+
310+
//Mocks behaviour
311+
doReturn(Collections.singletonList(Mode.WEB)).when(controllerUtils).getModesList(any(),any());
312+
doReturn(Set.of(TestConstants.DEFAULT_INTERROGATION_ID))
313+
.when(rawResponsePersistencePort).findUnprocessedInterrogationIdsByCollectionInstrumentId(any());
314+
doReturn(metadataModel).when(metadataService).loadAndSaveIfNotExists(any(), any(), any(), any(), any());
315+
doReturn(rawResponses).when(rawResponsePersistencePort).findRawResponses(any(), any(), any());
316+
}
317+
private void processRawResponses_then_validation_date_null(
318+
List<SurveyUnitModel> createdModels
319+
){
320+
Assertions.assertThat(createdModels).hasSize(1);
321+
Assertions.assertThat(createdModels.getFirst().getValidationDate()).isNull();
322+
}
238323
}
239324
}

0 commit comments

Comments
 (0)