Skip to content

Commit 3e8c4cc

Browse files
committed
test: exceptions tests and nested
1 parent a8f4542 commit 3e8c4cc

File tree

1 file changed

+164
-80
lines changed

1 file changed

+164
-80
lines changed

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

Lines changed: 164 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919
import lombok.SneakyThrows;
2020
import org.assertj.core.api.Assertions;
2121
import org.junit.jupiter.api.BeforeEach;
22+
import org.junit.jupiter.api.DisplayName;
23+
import org.junit.jupiter.api.Nested;
24+
import org.junit.jupiter.api.Test;
2225
import org.junit.jupiter.params.ParameterizedTest;
2326
import org.junit.jupiter.params.provider.EnumSource;
2427
import org.mockito.ArgumentCaptor;
@@ -71,85 +74,166 @@ void init() {
7174
surveyUnitModelsCaptor = ArgumentCaptor.forClass(List.class);
7275
}
7376

74-
//Non regression tests of #22875
75-
@ParameterizedTest
76-
@EnumSource(RawResponseDto.QuestionnaireStateEnum.class)
77-
@SneakyThrows
78-
void processRawResponses_byCollectionInstrumentId_validation_date_questionnaire_state_test(
79-
RawResponseDto.QuestionnaireStateEnum questionnaireState
80-
) {
81-
//GIVEN
82-
processRawResponses_given(questionnaireState);
83-
84-
//WHEN
85-
rawResponseService.processRawResponses(TestConstants.DEFAULT_COLLECTION_INSTRUMENT_ID);
86-
verify(surveyUnitService).saveSurveyUnits(surveyUnitModelsCaptor.capture());
87-
List<SurveyUnitModel> createdModels = surveyUnitModelsCaptor.getValue();
88-
89-
//THEN
90-
processRawResponses_then(questionnaireState, createdModels);
91-
}
92-
93-
@ParameterizedTest
94-
@EnumSource(RawResponseDto.QuestionnaireStateEnum.class)
95-
@SneakyThrows
96-
void processRawResponses_byCollectionInstrumentIdAndInterrogationList_validation_date_questionnaire_state_test(
97-
RawResponseDto.QuestionnaireStateEnum questionnaireState
98-
) {
99-
//GIVEN
100-
processRawResponses_given(questionnaireState);
101-
102-
//WHEN
103-
rawResponseService.processRawResponses(
104-
TestConstants.DEFAULT_COLLECTION_INSTRUMENT_ID,
105-
Collections.singletonList(TestConstants.DEFAULT_INTERROGATION_ID),
106-
new ArrayList<>()
107-
);
108-
verify(surveyUnitService).saveSurveyUnits(surveyUnitModelsCaptor.capture());
109-
List<SurveyUnitModel> createdModels = surveyUnitModelsCaptor.getValue();
110-
111-
//THEN
112-
processRawResponses_then(questionnaireState, createdModels);
113-
}
114-
@SneakyThrows
115-
private void processRawResponses_given(RawResponseDto.QuestionnaireStateEnum questionnaireState){
116-
VariablesMap variablesMap = new VariablesMap();
117-
//TODO if the bug is caused by BPM, put variables into it to emulate fix
118-
MetadataModel metadataModel = new MetadataModel();
119-
metadataModel.setVariables(variablesMap);
120-
validationDate = questionnaireState.equals(RawResponseDto.QuestionnaireStateEnum.FINISHED) ?
121-
LocalDateTime.now() : null;
122-
123-
124-
List<RawResponse> rawResponses = new ArrayList<>();
125-
RawResponse rawResponse = new RawResponse(
126-
null,
127-
TestConstants.DEFAULT_INTERROGATION_ID,
128-
TestConstants.DEFAULT_COLLECTION_INSTRUMENT_ID,
129-
Mode.WEB,
130-
new HashMap<>(),
131-
LocalDateTime.now(),
132-
null
133-
);
134-
rawResponse.payload().put("validationDate", validationDate);
135-
rawResponse.payload().put("questionnaireState", questionnaireState);
136-
Map<String, Map<String, Map<String, String>>> dataMap = new HashMap<>();
137-
dataMap.put("COLLECTED", new HashMap<>());
138-
dataMap.get("COLLECTED").put("VAR1", new HashMap<>());
139-
dataMap.get("COLLECTED").get("VAR1").put("COLLECTED", "value");
140-
rawResponse.payload().put("data", dataMap);
141-
rawResponses.add(rawResponse);
142-
143-
//Mocks behaviour
144-
doReturn(Collections.singletonList(Mode.WEB)).when(controllerUtils).getModesList(any(),any());
145-
doReturn(Set.of(TestConstants.DEFAULT_INTERROGATION_ID)).when(rawResponsePersistencePort).findUnprocessedInterrogationIdsByCollectionInstrumentId(any());
146-
doReturn(metadataModel).when(metadataService).loadAndSaveIfNotExists(any(), any(), any(), any(), any());
147-
doReturn(rawResponses).when(rawResponsePersistencePort).findRawResponses(any(), any(), any());
148-
}
149-
private void processRawResponses_then(RawResponseDto.QuestionnaireStateEnum questionnaireState,
150-
List<SurveyUnitModel> createdModels) {
151-
Assertions.assertThat(createdModels).hasSize(1);
152-
Assertions.assertThat(createdModels.getFirst().getValidationDate()).isEqualTo(validationDate);
153-
Assertions.assertThat(createdModels.getFirst().getQuestionnaireState()).isEqualTo(questionnaireState);
77+
//
78+
@Nested
79+
@DisplayName("Non regression tests of #22875 : validation date and questionnaire state in processed responses")
80+
class ValidationDateAndQuestionnaireStateTests{
81+
@ParameterizedTest
82+
@EnumSource(RawResponseDto.QuestionnaireStateEnum.class)
83+
@SneakyThrows
84+
void processRawResponses_byCollectionInstrumentId_validation_date_questionnaire_state_test(
85+
RawResponseDto.QuestionnaireStateEnum questionnaireState
86+
) {
87+
//GIVEN
88+
processRawResponses_given(questionnaireState);
89+
90+
//WHEN
91+
rawResponseService.processRawResponses(TestConstants.DEFAULT_COLLECTION_INSTRUMENT_ID);
92+
verify(surveyUnitService).saveSurveyUnits(surveyUnitModelsCaptor.capture());
93+
List<SurveyUnitModel> createdModels = surveyUnitModelsCaptor.getValue();
94+
95+
//THEN
96+
processRawResponses_then(questionnaireState, createdModels);
97+
}
98+
99+
@ParameterizedTest
100+
@EnumSource(RawResponseDto.QuestionnaireStateEnum.class)
101+
@SneakyThrows
102+
void processRawResponses_byCollectionInstrumentIdAndInterrogationList_validation_date_questionnaire_state_test(
103+
RawResponseDto.QuestionnaireStateEnum questionnaireState
104+
) {
105+
//GIVEN
106+
processRawResponses_given(questionnaireState);
107+
108+
//WHEN
109+
rawResponseService.processRawResponses(
110+
TestConstants.DEFAULT_COLLECTION_INSTRUMENT_ID,
111+
Collections.singletonList(TestConstants.DEFAULT_INTERROGATION_ID),
112+
new ArrayList<>()
113+
);
114+
verify(surveyUnitService).saveSurveyUnits(surveyUnitModelsCaptor.capture());
115+
List<SurveyUnitModel> createdModels = surveyUnitModelsCaptor.getValue();
116+
117+
//THEN
118+
processRawResponses_then(questionnaireState, createdModels);
119+
}
120+
@SneakyThrows
121+
private void processRawResponses_given(RawResponseDto.QuestionnaireStateEnum questionnaireState){
122+
VariablesMap variablesMap = new VariablesMap();
123+
//TODO if the bug is caused by BPM, put variables into it to emulate fix
124+
MetadataModel metadataModel = new MetadataModel();
125+
metadataModel.setVariables(variablesMap);
126+
validationDate = questionnaireState.equals(RawResponseDto.QuestionnaireStateEnum.FINISHED) ?
127+
LocalDateTime.now() : null;
128+
129+
List<RawResponse> rawResponses = new ArrayList<>();
130+
RawResponse rawResponse = new RawResponse(
131+
null,
132+
TestConstants.DEFAULT_INTERROGATION_ID,
133+
TestConstants.DEFAULT_COLLECTION_INSTRUMENT_ID,
134+
Mode.WEB,
135+
new HashMap<>(),
136+
LocalDateTime.now(),
137+
null
138+
);
139+
rawResponse.payload().put("validationDate", validationDate);
140+
rawResponse.payload().put("questionnaireState", questionnaireState);
141+
rawResponse.payload().put("usualSurveyUnitId", TestConstants.DEFAULT_SURVEY_UNIT_ID);
142+
rawResponse.payload().put("majorModelVersion", 2);
143+
Map<String, Map<String, Map<String, String>>> dataMap = new HashMap<>();
144+
dataMap.put("COLLECTED", new HashMap<>());
145+
dataMap.get("COLLECTED").put("VAR1", new HashMap<>());
146+
dataMap.get("COLLECTED").get("VAR1").put("COLLECTED", "value");
147+
rawResponse.payload().put("data", dataMap);
148+
rawResponses.add(rawResponse);
149+
150+
//Mocks behaviour
151+
doReturn(Collections.singletonList(Mode.WEB)).when(controllerUtils).getModesList(any(),any());
152+
doReturn(Set.of(TestConstants.DEFAULT_INTERROGATION_ID)).when(rawResponsePersistencePort).findUnprocessedInterrogationIdsByCollectionInstrumentId(any());
153+
doReturn(metadataModel).when(metadataService).loadAndSaveIfNotExists(any(), any(), any(), any(), any());
154+
doReturn(rawResponses).when(rawResponsePersistencePort).findRawResponses(any(), any(), any());
155+
}
156+
private void processRawResponses_then(RawResponseDto.QuestionnaireStateEnum questionnaireState,
157+
List<SurveyUnitModel> createdModels) {
158+
Assertions.assertThat(createdModels).hasSize(1);
159+
Assertions.assertThat(createdModels.getFirst().getValidationDate()).isEqualTo(validationDate);
160+
Assertions.assertThat(createdModels.getFirst().getQuestionnaireState()).isEqualTo(questionnaireState);
161+
}
162+
163+
//Non blocking exception tests
164+
@Test
165+
@SneakyThrows
166+
void processRawResponses_byCollectionInstrumentId_invalid_questionnaire_state_test() {
167+
//GIVEN
168+
processRawResponses_given_invalid_questionnaire_state();
169+
170+
//WHEN
171+
rawResponseService.processRawResponses(
172+
TestConstants.DEFAULT_COLLECTION_INSTRUMENT_ID,
173+
Collections.singletonList(TestConstants.DEFAULT_INTERROGATION_ID),
174+
new ArrayList<>()
175+
);
176+
verify(surveyUnitService).saveSurveyUnits(surveyUnitModelsCaptor.capture());
177+
List<SurveyUnitModel> createdModels = surveyUnitModelsCaptor.getValue();
178+
179+
//THEN
180+
processRawResponses_then_validation_date_null(createdModels);
181+
}
182+
@Test
183+
@SneakyThrows
184+
void processRawResponses_byCollectionInstrumentIdAndInterrogationList_invalid_questionnaire_state_test() {
185+
//GIVEN
186+
processRawResponses_given_invalid_questionnaire_state();
187+
188+
//WHEN
189+
rawResponseService.processRawResponses(
190+
TestConstants.DEFAULT_COLLECTION_INSTRUMENT_ID
191+
);
192+
verify(surveyUnitService).saveSurveyUnits(surveyUnitModelsCaptor.capture());
193+
List<SurveyUnitModel> createdModels = surveyUnitModelsCaptor.getValue();
194+
195+
//THEN
196+
processRawResponses_then_validation_date_null(createdModels);
197+
}
198+
199+
@SneakyThrows
200+
private void processRawResponses_given_invalid_questionnaire_state(){
201+
VariablesMap variablesMap = new VariablesMap();
202+
MetadataModel metadataModel = new MetadataModel();
203+
metadataModel.setVariables(variablesMap);
204+
validationDate = LocalDateTime.now();
205+
206+
List<RawResponse> rawResponses = new ArrayList<>();
207+
RawResponse rawResponse = new RawResponse(
208+
null,
209+
TestConstants.DEFAULT_INTERROGATION_ID,
210+
TestConstants.DEFAULT_COLLECTION_INSTRUMENT_ID,
211+
Mode.WEB,
212+
new HashMap<>(),
213+
LocalDateTime.now(),
214+
null
215+
);
216+
rawResponse.payload().put("validationDate", validationDate);
217+
rawResponse.payload().put("questionnaireState", "not a questionnaire state");
218+
rawResponse.payload().put("usualSurveyUnitId", TestConstants.DEFAULT_SURVEY_UNIT_ID);
219+
rawResponse.payload().put("majorModelVersion", 2);
220+
Map<String, Map<String, Map<String, String>>> dataMap = new HashMap<>();
221+
dataMap.put("COLLECTED", new HashMap<>());
222+
dataMap.get("COLLECTED").put("VAR1", new HashMap<>());
223+
dataMap.get("COLLECTED").get("VAR1").put("COLLECTED", "value");
224+
rawResponse.payload().put("data", dataMap);
225+
rawResponses.add(rawResponse);
226+
227+
//Mocks behaviour
228+
doReturn(Collections.singletonList(Mode.WEB)).when(controllerUtils).getModesList(any(),any());
229+
doReturn(Set.of(TestConstants.DEFAULT_INTERROGATION_ID)).when(rawResponsePersistencePort).findUnprocessedInterrogationIdsByCollectionInstrumentId(any());
230+
doReturn(metadataModel).when(metadataService).loadAndSaveIfNotExists(any(), any(), any(), any(), any());
231+
doReturn(rawResponses).when(rawResponsePersistencePort).findRawResponses(any(), any(), any());
232+
}
233+
private void processRawResponses_then_validation_date_null(List<SurveyUnitModel> createdModels){
234+
Assertions.assertThat(createdModels).hasSize(1);
235+
Assertions.assertThat(createdModels.getFirst().getValidationDate()).isEqualTo(validationDate);
236+
Assertions.assertThat(createdModels.getFirst().getQuestionnaireState()).isNull();
237+
}
154238
}
155239
}

0 commit comments

Comments
 (0)