1919import lombok .SneakyThrows ;
2020import org .assertj .core .api .Assertions ;
2121import 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 ;
2225import org .junit .jupiter .params .ParameterizedTest ;
2326import org .junit .jupiter .params .provider .EnumSource ;
2427import 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