44import fr .insee .bpm .exceptions .MetadataParserException ;
55import fr .insee .bpm .metadata .model .VariablesMap ;
66import fr .insee .bpm .metadata .reader .ddi .DDIReader ;
7+ import fr .insee .genesis .configuration .Config ;
78import fr .insee .genesis .controller .adapter .LunaticXmlAdapter ;
8- import fr .insee .genesis .domain .model .surveyunit .SurveyUnitModel ;
9- import fr .insee .genesis .domain .service .surveyunit .SurveyUnitQualityService ;
9+ import fr .insee .genesis .controller .rest .responses .ResponseController ;
1010import fr .insee .genesis .controller .sources .xml .LunaticXmlCampaign ;
1111import fr .insee .genesis .controller .sources .xml .LunaticXmlDataParser ;
1212import fr .insee .genesis .controller .sources .xml .LunaticXmlSurveyUnit ;
13+ import fr .insee .genesis .controller .utils .ControllerUtils ;
1314import fr .insee .genesis .domain .model .surveyunit .CollectedVariable ;
1415import fr .insee .genesis .domain .model .surveyunit .DataState ;
1516import fr .insee .genesis .domain .model .surveyunit .Mode ;
17+ import fr .insee .genesis .domain .model .surveyunit .SurveyUnitModel ;
1618import fr .insee .genesis .domain .model .surveyunit .Variable ;
19+ import fr .insee .genesis .domain .service .rawdata .LunaticJsonRawDataService ;
20+ import fr .insee .genesis .domain .service .rawdata .LunaticXmlRawDataService ;
21+ import fr .insee .genesis .domain .service .surveyunit .SurveyUnitQualityService ;
22+ import fr .insee .genesis .domain .service .surveyunit .SurveyUnitService ;
1723import fr .insee .genesis .exceptions .GenesisException ;
24+ import fr .insee .genesis .infrastructure .utils .FileUtils ;
25+ import fr .insee .genesis .stubs .ConfigStub ;
26+ import fr .insee .genesis .stubs .LunaticJsonPersistanceStub ;
27+ import fr .insee .genesis .stubs .LunaticXmlPersistanceStub ;
28+ import fr .insee .genesis .stubs .SurveyUnitPersistencePortStub ;
29+ import io .cucumber .java .After ;
30+ import io .cucumber .java .Before ;
1831import io .cucumber .java .en .Given ;
1932import io .cucumber .java .en .Then ;
2033import io .cucumber .java .en .When ;
2437import javax .xml .parsers .ParserConfigurationException ;
2538import java .io .FileInputStream ;
2639import java .io .IOException ;
40+ import java .nio .file .Files ;
2741import java .nio .file .Path ;
2842import java .nio .file .Paths ;
43+ import java .nio .file .StandardCopyOption ;
2944import java .util .ArrayList ;
3045import java .util .List ;
3146import java .util .Optional ;
@@ -36,19 +51,37 @@ public class MainDefinitions {
3651 final Path ddiDirectory = Paths .get (TestConstants .FUNCTIONAL_TESTS_DDI_DIRECTORY );
3752
3853 SurveyUnitQualityService surveyUnitQualityService = new SurveyUnitQualityService ();
54+ SurveyUnitPersistencePortStub surveyUnitPersistence = new SurveyUnitPersistencePortStub ();
55+ Config config = new ConfigStub ();
56+
57+ ResponseController responseController = new ResponseController (
58+ new SurveyUnitService (surveyUnitPersistence ),
59+ surveyUnitQualityService ,
60+ new LunaticXmlRawDataService (new LunaticXmlPersistanceStub ()),
61+ new LunaticJsonRawDataService (new LunaticJsonPersistanceStub ()),
62+ new FileUtils (config ),
63+ new ControllerUtils (new FileUtils (config ))
64+ );
3965
4066 List <SurveyUnitModel > surveyUnitModels ;
4167
68+ @ Before
69+ public void init () {
70+ this .surveyUnitPersistence .getMongoStub ().clear ();
71+ }
72+
4273 @ Given ("We have data in directory {string}" )
43- public void init (String directory ){
74+ public void init_folder (String directory ) throws IOException {
4475 this .directory = directory ;
4576 inDirectory = inDirectory .resolve (directory );
77+ Files .createDirectories (inDirectory );
4678 }
4779
4880 @ When ("We create DTOs from file {string} with DDI {string}" )
49- public void get_dtos (String fileName , String DDIName ) throws IOException , ParserConfigurationException , SAXException , GenesisException , MetadataParserException {
81+ public void get_dtos (String fileName , String ddiName ) throws IOException , ParserConfigurationException ,
82+ SAXException , GenesisException , MetadataParserException {
5083 Path filePath = inDirectory .resolve (fileName );
51- Path ddiFilePath = ddiDirectory .resolve (directory ).resolve (DDIName );
84+ Path ddiFilePath = ddiDirectory .resolve (directory ).resolve (ddiName );
5285
5386 if (fileName .endsWith (".xml" )){
5487 LunaticXmlDataParser parser = new LunaticXmlDataParser ();
@@ -67,6 +100,32 @@ public void get_dtos(String fileName, String DDIName) throws IOException, Parser
67100 }
68101 }
69102
103+ @ When ("We copy data file {string} to that directory" )
104+ public void copy_data_file (String dataFile ) throws IOException {
105+ Path dataFilePath = Paths .get (TestConstants .TEST_RESOURCES_DIRECTORY ).resolve (dataFile );
106+ Files .copy (dataFilePath , this .inDirectory .resolve (dataFilePath .getFileName ().toString ()),
107+ StandardCopyOption .REPLACE_EXISTING );
108+ }
109+
110+ @ When ("We save data from that directory" )
111+ public void get_dtos_from_folder () throws Exception {
112+ responseController .saveResponsesFromXmlCampaignFolder (this .inDirectory .getFileName ().toString (), null , true );
113+ }
114+
115+ @ When ("We delete that directory" )
116+ public void delete_directory () throws IOException {
117+ org .springframework .util .FileSystemUtils .deleteRecursively (inDirectory );
118+ }
119+
120+ @ Then ("There should be {int} {string} SurveyUnit in database" )
121+ public void check_surveyunits_by_state (int expectedCount , String expectedStatus ) {
122+ Assertions .assertThat (this .surveyUnitPersistence .getMongoStub ().stream ().filter (
123+ surveyUnitModel -> surveyUnitModel .getState ().name ().equals (expectedStatus )
124+ ).toList ()).hasSize (expectedCount );
125+ }
126+
127+
128+
70129 @ Then ("For SurveyUnit {string} there should be at least one {string} SurveyUnit DTO" )
71130 public void check_expected_datastate_dto (String surveyUnitId , String expectedDataState ) {
72131 Assertions .assertThat (this .surveyUnitModels ).filteredOn (surveyUnitDto ->
@@ -76,9 +135,9 @@ public void check_expected_datastate_dto(String surveyUnitId, String expectedDat
76135 }
77136
78137 @ Then ("For SurveyUnit {string} there shouldn't be a {string} SurveyUnit DTO" )
79- public void check_unexpected_datastate_dto (String surveyUnitId , String UnexpectedDataState ) {
138+ public void check_unexpected_datastate_dto (String surveyUnitId , String unexpectedDataState ) {
80139 Assertions .assertThat (this .surveyUnitModels ).filteredOn (surveyUnitDto ->
81- surveyUnitDto .getState ().toString ().equals (UnexpectedDataState )
140+ surveyUnitDto .getState ().toString ().equals (unexpectedDataState )
82141 && surveyUnitDto .getIdUE ().equals (surveyUnitId )
83142 ).isEmpty ();
84143 }
@@ -185,4 +244,11 @@ public void external_variable_content_check(String externalVariableName, String
185244 Assertions .assertThat (concernedVariable .getValues ()).hasSizeGreaterThan (expectedValueIndex );
186245 Assertions .assertThat (concernedVariable .getValues ().get (expectedValueIndex )).isEqualTo (expectedValue );
187246 }
247+
248+ @ After
249+ public void clean () throws IOException {
250+ //Clean DONE test folder
251+ org .springframework .util .FileSystemUtils .deleteRecursively (Path .of (TestConstants .TEST_RESOURCES_DIRECTORY ,
252+ "DONE" ));
253+ }
188254}
0 commit comments