11package cucumber .functional_tests ;
22
3+ import fr .insee .genesis .TestConstants ;
4+ import fr .insee .genesis .configuration .Config ;
5+ import fr .insee .genesis .controller .rest .responses .RawResponseController ;
6+ import fr .insee .genesis .controller .services .MetadataService ;
7+ import fr .insee .genesis .controller .utils .ControllerUtils ;
8+ import fr .insee .genesis .domain .model .surveyunit .Mode ;
9+ import fr .insee .genesis .domain .ports .api .LunaticJsonRawDataApiPort ;
10+ import fr .insee .genesis .domain .service .rawdata .LunaticJsonRawDataService ;
11+ import fr .insee .genesis .domain .service .surveyunit .SurveyUnitQualityService ;
12+ import fr .insee .genesis .domain .service .surveyunit .SurveyUnitService ;
13+ import fr .insee .genesis .infrastructure .utils .FileUtils ;
14+ import fr .insee .genesis .stubs .ConfigStub ;
15+ import fr .insee .genesis .stubs .LunaticJsonRawDataPersistanceStub ;
16+ import fr .insee .genesis .stubs .SurveyUnitPersistencePortStub ;
17+ import io .cucumber .java .Before ;
18+ import io .cucumber .java .en .Given ;
19+ import io .cucumber .java .en .Then ;
20+ import io .cucumber .java .en .When ;
21+ import lombok .extern .slf4j .Slf4j ;
22+ import org .assertj .core .api .Assertions ;
23+ import org .springframework .beans .factory .annotation .Autowired ;
24+ import org .springframework .boot .test .web .client .TestRestTemplate ;
25+ import org .springframework .boot .test .web .server .LocalServerPort ;
26+ import org .springframework .http .HttpEntity ;
27+ import org .springframework .http .HttpHeaders ;
28+ import org .springframework .http .HttpMethod ;
29+ import org .springframework .http .HttpStatus ;
30+ import org .springframework .http .MediaType ;
31+ import org .springframework .http .ResponseEntity ;
32+
33+ import java .io .IOException ;
34+ import java .nio .file .Files ;
35+ import java .nio .file .Path ;
36+
37+ @ Slf4j
338public class RawDataDefinitions {
4- /* LunaticJsonRawDataPersistanceStub lunaticJsonRawDataPersistanceStub = new LunaticJsonRawDataPersistanceStub();
39+
40+
41+ @ LocalServerPort
42+ private int port ;
43+
44+ private String BASE_URL ;
45+ @ Autowired
46+ private TestRestTemplate rest ;
47+
48+ LunaticJsonRawDataPersistanceStub lunaticJsonRawDataPersistanceStub = new LunaticJsonRawDataPersistanceStub ();
549 LunaticJsonRawDataApiPort lunaticJsonRawDataApiPort = new LunaticJsonRawDataService (lunaticJsonRawDataPersistanceStub );
650 Config config = new ConfigStub ();
751 FileUtils fileUtils = new FileUtils (config );
@@ -16,229 +60,56 @@ public class RawDataDefinitions {
1660 fileUtils
1761 );
1862 Path rawDataFilePath ;
19- ResponseEntity<Object> response;
63+ String rawJsonData ;
64+ ResponseEntity <String > response ;
65+ int nbRawSaved = 0 ;
2066
2167 @ Before
2268 public void init (){
2369 this .lunaticJsonRawDataPersistanceStub .getMongoStub ().clear ();
70+ log .info ("rest autowired : {}" , rest .getRootUri ());
71+ BASE_URL = "http://localhost:" + port + "/" ;
2472 }
2573
26-
2774 @ Given ("We have raw data file in {string}" )
28- public void set_input_file(String rawDataFile){
75+ public void set_input_file (String rawDataFile ) throws IOException {
2976 this .rawDataFilePath = Path .of (TestConstants .TEST_RESOURCES_DIRECTORY ,rawDataFile );
77+ rawJsonData = Files .readString (rawDataFilePath );
3078 }
3179
3280 @ When ("We save that raw data for web campaign {string}, questionnaire {string}, interrogation {string}" )
3381 public void save_raw_data (String campaignId , String questionnaireId , String interrogationId ) throws IOException {
34- if(rawDataFilePath == null){
35- throw new RuntimeException("Raw data file path is null !");
36- }
82+ HttpHeaders headers = new HttpHeaders ();
83+ headers .setContentType (MediaType .APPLICATION_JSON );
3784
38- response = rawResponseController.saveRawResponsesFromJsonBody(
85+ String url = String .format ("%sresponses/raw/lunatic-json/save?campaignName=%s&questionnaireId=%s&interrogationId=%s&surveyUnitId=%s&mode=%s" ,
86+ BASE_URL ,
3987 campaignId ,
4088 questionnaireId ,
4189 interrogationId ,
4290 null ,
43- Mode.WEB,
44- Files.readString(rawDataFilePath)
91+ Mode .WEB
4592 );
46- }
47-
48- @When("We process raw data for campaign {string}, questionnaire {string} and interrogation {string}")
49- public void process_raw_data(
50- String campaignId,
51- String questionnaireId,
52- String interrogationId
5393
54- ) {
55- List<String> interrogationIdList = Collections.singletonList(interrogationId);
94+ HttpEntity <String > requestEntity = new HttpEntity <>(rawJsonData .trim (), headers );
95+ try {
96+ response = rest .exchange (url , HttpMethod .PUT , requestEntity , String .class );
97+ if (response .getStatusCode ().is2xxSuccessful ()){nbRawSaved ++;}
98+ } catch (Exception e ) {
99+ response = new ResponseEntity <>("Unexpected error" , HttpStatus .INTERNAL_SERVER_ERROR );
100+ }
56101
57- response = rawResponseController.processJsonRawData(
58- campaignId,
59- questionnaireId,
60- interrogationIdList
61- );
62- Assertions.assertThat(response.getStatusCode().is2xxSuccessful()).isTrue();
63102 }
64103
65104 @ Then ("We should have {int} raw data document" )
66105 public void check_document_count (int expectedCount ){
67- Assertions.assertThat(lunaticJsonRawDataPersistanceStub.getMongoStub()).hasSize(expectedCount);
68- }
69-
70- @Then("We should have {int} collected variables and {int} " +
71- "external variables for campaign {string}, questionnaire {string}, interrogation {string}")
72- public void check_variables_count(
73- int expectedCollectedVariablesCount,
74- int expectedExternalVariablesCount,
75- String campaignId,
76- String questionnaireId,
77- String interrogationId
78- ){
79- List<LunaticJsonDataDocument> lunaticJsonDataDocuments = lunaticJsonRawDataPersistanceStub.getMongoStub()
80- .stream().filter(
81- lunaticJsonDataDocument -> lunaticJsonDataDocument.campaignId().equals(campaignId)
82- && lunaticJsonDataDocument.questionnaireId().equals(questionnaireId)
83- && lunaticJsonDataDocument.interrogationId().equals(interrogationId)
84- ).toList();
85-
86- Assertions.assertThat(lunaticJsonDataDocuments).hasSize(1);
87- Assertions.assertThat(lunaticJsonDataDocuments.getFirst().data().collectedVariables()).hasSize(expectedCollectedVariablesCount);
88- Assertions.assertThat(lunaticJsonDataDocuments.getFirst().data().externalVariables()).hasSize(expectedExternalVariablesCount);
89- }
90-
91- @Then("For {string} collected variable, state {string}, campaign {string}, questionnaire {string}, interrogation " +
92- "{string} we should have {string} as value number {int} in array")
93- public void check_collected_variable_content_array(
94- String variableName,
95- String datastate,
96- String campaignId,
97- String questionnaireId,
98- String interrogationId,
99- String expectedValue,
100- int index
101- ) {
102- List<LunaticJsonDataDocument> lunaticJsonDataDocuments = lunaticJsonRawDataPersistanceStub.getMongoStub()
103- .stream().filter(
104- lunaticJsonDataDocument -> lunaticJsonDataDocument.campaignId().equals(campaignId)
105- && lunaticJsonDataDocument.questionnaireId().equals(questionnaireId)
106- && lunaticJsonDataDocument.interrogationId().equals(interrogationId)
107- ).toList();
108-
109-
110- Assertions.assertThat(lunaticJsonDataDocuments).hasSize(1);
111- Assertions.assertThat(lunaticJsonDataDocuments.getFirst().data().collectedVariables()).containsKey(variableName);
112-
113- LunaticJsonRawDataCollectedVariable lunaticJsonRawDataCollectedVariable =
114- lunaticJsonDataDocuments.getFirst().data().collectedVariables().get(variableName);
115- Assertions.assertThat(lunaticJsonRawDataCollectedVariable.collectedVariableByStateMap()).containsKey(DataState.valueOf(datastate));
116-
117- LunaticJsonRawDataVariable lunaticJsonRawDataVariable =
118- lunaticJsonRawDataCollectedVariable.collectedVariableByStateMap().get(DataState.valueOf(datastate));
119-
120- Assertions.assertThat(lunaticJsonRawDataVariable.value()).isNull();
121- Assertions.assertThat(lunaticJsonRawDataVariable.valuesArray()).isNotNull();
122- Assertions.assertThat(lunaticJsonRawDataVariable.valuesArray().get(index)).isNotNull().isEqualTo(expectedValue);
106+ Assertions .assertThat (nbRawSaved ).isEqualTo (expectedCount );
123107 }
124108
125- @Then("For {string} external variable, campaign {string}, questionnaire {string}, interrogation {string} we " +
126- "should have {string} as value number {int} in array")
127- public void check_external_variable_content_array(
128- String variableName,
129- String campaignId,
130- String questionnaireId,
131- String interrogationId,
132- String expectedValue,
133- int index
134- ) {
135- List<LunaticJsonDataDocument> lunaticJsonDataDocuments = lunaticJsonRawDataPersistanceStub.getMongoStub()
136- .stream().filter(
137- lunaticJsonDataDocument -> lunaticJsonDataDocument.campaignId().equals(campaignId)
138- && lunaticJsonDataDocument.questionnaireId().equals(questionnaireId)
139- && lunaticJsonDataDocument.interrogationId().equals(interrogationId)
140- ).toList();
141-
142- Assertions.assertThat(lunaticJsonDataDocuments).hasSize(1);
143- Assertions.assertThat(lunaticJsonDataDocuments.getFirst().data().externalVariables()).containsKey(variableName);
144-
145- LunaticJsonRawDataVariable lunaticJsonRawDataVariable =
146- lunaticJsonDataDocuments.getFirst().data().externalVariables().get(variableName);
147-
148- Assertions.assertThat(lunaticJsonRawDataVariable.value()).isNull();
149- Assertions.assertThat(lunaticJsonRawDataVariable.valuesArray()).isNotNull();
150- Assertions.assertThat(lunaticJsonRawDataVariable.valuesArray().get(index)).isNotNull().isEqualTo(expectedValue);
151- }
152-
153- @Then("For {string} external variable, campaign {string}, questionnaire {string}, interrogation {string} we should have {string} as value")
154- public void check_external_variable_content_no_array(
155- String variableName,
156- String campaignId,
157- String questionnaireId,
158- String interrogationId,
159- String expectedValue
160- ) {
161- List<LunaticJsonDataDocument> lunaticJsonDataDocuments = lunaticJsonRawDataPersistanceStub.getMongoStub()
162- .stream().filter(
163- lunaticJsonDataDocument -> lunaticJsonDataDocument.campaignId().equals(campaignId)
164- && lunaticJsonDataDocument.questionnaireId().equals(questionnaireId)
165- && lunaticJsonDataDocument.interrogationId().equals(interrogationId)
166- ).toList();
167-
168- Assertions.assertThat(lunaticJsonDataDocuments).hasSize(1);
169- Assertions.assertThat(lunaticJsonDataDocuments.getFirst().data().externalVariables()).containsKey(variableName);
170-
171- LunaticJsonRawDataVariable lunaticJsonRawDataVariable =
172- lunaticJsonDataDocuments.getFirst().data().externalVariables().get(variableName);
173-
174- Assertions.assertThat(lunaticJsonRawDataVariable.valuesArray()).isNull();
175- Assertions.assertThat(lunaticJsonRawDataVariable.value()).isNotNull().isEqualTo(expectedValue);
176- }
177109
178110 @ Then ("We should have {int} status code" )
179111 public void check_response_status_code (int expectedStatusCode ){
180112 Assertions .assertThat (response .getStatusCode ().value ()).isEqualTo (expectedStatusCode );
181113 }
182114
183- @Then("For collected variable {string} in survey unit {string} we should have {string} for " +
184- "iteration {int}")
185- public void check_collected_variable_content_in_mongo(
186- String collectedVariableName,
187- String interrogationId,
188- String expectedValue,
189- Integer iteration
190- ) {
191- //Get SurveyUnitModel
192- List<SurveyUnitModel> concernedSurveyUnitModels = surveyUnitPersistencePortStub.getMongoStub().stream().filter(surveyUnitModel ->
193- surveyUnitModel.getState().equals(DataState.COLLECTED)
194- && surveyUnitModel.getInterrogationId().equals(interrogationId)
195- ).toList();
196- Assertions.assertThat(concernedSurveyUnitModels).hasSize(1);
197-
198- SurveyUnitModel surveyUnitModel = concernedSurveyUnitModels.getFirst();
199-
200- //Get Variable
201- List<VariableModel> concernedCollectedVariables =
202- surveyUnitModel.getCollectedVariables().stream().filter(variableModel ->
203- variableModel.varId().equals(collectedVariableName)
204- && variableModel.iteration().equals(iteration)
205- ).toList();
206- Assertions.assertThat(concernedCollectedVariables).hasSize(1);
207-
208- VariableModel variableModel = concernedCollectedVariables.getFirst();
209-
210- //Value content assertion
211- Assertions.assertThat(variableModel.value()).isEqualTo(expectedValue);
212- }
213-
214- @Then("For external variable {string} in survey unit {string} we should have {string} for " +
215- "iteration {int}")
216- public void check_external_variable_content_in_mongo(
217- String externalVariableName,
218- String interrogationId,
219- String expectedValue,
220- Integer iteration
221- ) {
222- //Get SurveyUnitModel
223- List<SurveyUnitModel> concernedSurveyUnitModels = surveyUnitPersistencePortStub.getMongoStub().stream().filter(surveyUnitModel ->
224- surveyUnitModel.getState().equals(DataState.COLLECTED)
225- && surveyUnitModel.getInterrogationId().equals(interrogationId)
226- ).toList();
227- Assertions.assertThat(concernedSurveyUnitModels).hasSize(1);
228-
229- SurveyUnitModel surveyUnitModel = concernedSurveyUnitModels.getFirst();
230-
231- //Get Variable
232- List<VariableModel> concernedExternalVariables =
233- surveyUnitModel.getExternalVariables().stream().filter(variableModel ->
234- variableModel.varId().equals(externalVariableName)
235- && variableModel.iteration().equals(iteration)
236- ).toList();
237- Assertions.assertThat(concernedExternalVariables).hasSize(1);
238-
239- VariableModel variableModel = concernedExternalVariables.getFirst();
240-
241- //Value content assertion
242- Assertions.assertThat(variableModel.value()).isEqualTo(expectedValue);
243- }*/
244115}
0 commit comments