Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,18 @@ public ResponseEntity<List<SurveyUnitModel>> findResponsesByInterrogationAndColl
return ResponseEntity.ok(responses);
}

//GET
@Operation(summary = "Retrieve responses for an interrogation, using usualSurveyUnitId and collectionInstrumentId (formerly questionnaireId) from Genesis Database")
@GetMapping(path = "/by-usual-survey-unit-and-collection-instrument")
@PreAuthorize("hasRole('ADMIN')")
public ResponseEntity<List<SurveyUnitModel>> findResponsesByUsualSurveyUnitAndCollectionInstrument(
@RequestParam("usualSurveyUnitId") String usualSurveyUnitId,
@RequestParam("collectionInstrumentId") String collectionInstrumentId)
{
List<SurveyUnitModel> responses = surveyUnitService.findByIdsUsualSurveyUnitAndCollectionInstrument(usualSurveyUnitId, collectionInstrumentId);
return ResponseEntity.ok(responses);
}

/**
* @deprecated
* This endpoint is deprecated because the parameter `questionnaireId` has been renamed
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,9 @@ public interface SurveyUnitApiPort {

void saveSurveyUnits(List<SurveyUnitModel> suList);

List<SurveyUnitModel> findByIdsInterrogationAndCollectionInstrument(String interrogationId, String questionnaireId);
List<SurveyUnitModel> findByIdsInterrogationAndCollectionInstrument(String interrogationId, String collectionInstrumentId);

List<SurveyUnitModel> findByIdsUsualSurveyUnitAndCollectionInstrument(String usualSurveyUnitId, String collectionInstrumentId);

List<SurveyUnitModel> findByInterrogationId(String interrogationId);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@ public interface SurveyUnitPersistencePort {

void saveAll(List<SurveyUnitModel> suList);

List<SurveyUnitModel> findByIds(String interrogationId, String questionnaireId);
List<SurveyUnitModel> findByIds(String interrogationId, String collectionInstrumentId);

List<SurveyUnitModel> findByUsualSurveyUnitAndCollectionInstrumentIds(String usualSurveyUnitId, String collectionInstrumentId);

//========= OPTIMISATIONS PERFS (START) ==========
/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,11 @@ public List<SurveyUnitModel> findByIdsInterrogationAndCollectionInstrument(Strin
return surveyUnitPersistencePort.findByIds(interrogationId, collectionInstrumentId);
}

@Override
public List<SurveyUnitModel> findByIdsUsualSurveyUnitAndCollectionInstrument(String usualSurveyUnitId, String collectionInstrumentId) {
return surveyUnitPersistencePort.findByUsualSurveyUnitAndCollectionInstrumentIds(usualSurveyUnitId, collectionInstrumentId);
}

@Override
public List<SurveyUnitModel> findByInterrogationId(String interrogationId) {
return surveyUnitPersistencePort.findByInterrogationId(interrogationId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,16 @@ public List<SurveyUnitModel> findByIds(String interrogationId, String collection
return results.isEmpty() ? Collections.emptyList() : SurveyUnitDocumentMapper.INSTANCE.listDocumentToListModel(results);
}

@Override
public List<SurveyUnitModel> findByUsualSurveyUnitAndCollectionInstrumentIds(String usualSurveyUnitId, String collectionInstrumentId) {
List<SurveyUnitDocument> results = new ArrayList<>();
results.addAll(mongoRepository.findByUsualSurveyUnitIdAndCollectionInstrumentId(usualSurveyUnitId, collectionInstrumentId));
// To ensure compatibility with older documents (with questionnaireId instead of collectionInstrumentId)
results.addAll(mongoRepository.findByUsualSurveyUnitIdAndQuestionnaireId(usualSurveyUnitId, collectionInstrumentId));
return results.isEmpty() ? Collections.emptyList() : SurveyUnitDocumentMapper.INSTANCE.listDocumentToListModel(results); }

//========= OPTIMISATIONS PERFS (START) ==========

//========= OPTIMISATIONS PERFS (START) ==========
/**
* @author Adrien Marchal
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ public interface SurveyUnitMongoDBRepository extends MongoRepository<SurveyUnitD
List<SurveyUnitDocument> findByInterrogationIdAndQuestionnaireId(String interrogationId, String questionnaireId);
List<SurveyUnitDocument> findByInterrogationIdAndCollectionInstrumentId(String interrogationId, String collectionInstrumentId);

List<SurveyUnitDocument> findByUsualSurveyUnitIdAndCollectionInstrumentId(String usualSurveyUnitId, String collectionInstrumentId);
List<SurveyUnitDocument> findByUsualSurveyUnitIdAndQuestionnaireId(String usualSurveyUnitId, String questionnaireId);

//========= OPTIMISATIONS PERFS (START) ==========
/**
* @author Adrien Marchal
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,17 @@ void findResponsesByUEAndQuestionnaireTest() {
Assertions.assertThat(response.getBody().getFirst().getCollectionInstrumentId()).isEqualTo(DEFAULT_COLLECTION_INSTRUMENT_ID);
}

@Test
void findResponsesByUsualSurveyUnitAndQuestionnaireTest() {
ResponseEntity<List<SurveyUnitModel>> response = responseControllerStatic.findResponsesByUsualSurveyUnitAndCollectionInstrument(DEFAULT_SURVEY_UNIT_ID, DEFAULT_COLLECTION_INSTRUMENT_ID);

Assertions.assertThat(response.getStatusCode().is2xxSuccessful()).isTrue();
Assertions.assertThat(response.getBody()).isNotNull().isNotEmpty();
Assertions.assertThat(response.getBody().getFirst().getInterrogationId()).isEqualTo(DEFAULT_INTERROGATION_ID);
Assertions.assertThat(response.getBody().getFirst().getUsualSurveyUnitId()).isEqualTo(DEFAULT_SURVEY_UNIT_ID);
Assertions.assertThat(response.getBody().getFirst().getCollectionInstrumentId()).isEqualTo(DEFAULT_COLLECTION_INSTRUMENT_ID);
}

@Test
void getLatestByUETest() {
Utils.addAdditionalSurveyUnitModelToMongoStub(surveyUnitPersistencePortStub);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@

import static fr.insee.genesis.TestConstants.DEFAULT_COLLECTION_INSTRUMENT_ID;
import static fr.insee.genesis.TestConstants.DEFAULT_INTERROGATION_ID;
import static fr.insee.genesis.TestConstants.DEFAULT_SURVEY_UNIT_ID;

class SurveyUnitServiceTest {

Expand Down Expand Up @@ -80,6 +81,7 @@ void reset(){
surveyUnitPersistencePortStub.getMongoStub().add(SurveyUnitModel.builder()
.campaignId("TEST-TABLEAUX")
.mode(Mode.WEB)
.usualSurveyUnitId(DEFAULT_SURVEY_UNIT_ID)
.interrogationId(DEFAULT_INTERROGATION_ID)
.collectionInstrumentId(DEFAULT_COLLECTION_INSTRUMENT_ID)
.state(DataState.COLLECTED)
Expand Down Expand Up @@ -133,6 +135,7 @@ void saveAllTest(){
SurveyUnitModel.builder()
.campaignId("TEST-TABLEAUX")
.mode(Mode.WEB)
.usualSurveyUnitId(DEFAULT_SURVEY_UNIT_ID)
.interrogationId("TESTINTERROGATIONID2")
.collectionInstrumentId(DEFAULT_COLLECTION_INSTRUMENT_ID)
.state(DataState.COLLECTED)
Expand Down Expand Up @@ -175,6 +178,15 @@ void findByIdsUEAndQuestionnaireTest(){
).isNotEmpty();
}

@Test
void findByIdsUsualSurveyUnitAndCollectionInstrumentTest(){
Assertions.assertThat(surveyUnitServiceStatic.findByIdsUsualSurveyUnitAndCollectionInstrument(DEFAULT_SURVEY_UNIT_ID, DEFAULT_COLLECTION_INSTRUMENT_ID)).filteredOn(
surveyUnitModel ->
surveyUnitModel.getUsualSurveyUnitId().equals(DEFAULT_SURVEY_UNIT_ID)
&& surveyUnitModel.getCollectionInstrumentId().equals(DEFAULT_COLLECTION_INSTRUMENT_ID)
).isNotEmpty();
}

@Test
void findByInterrogationIdTest(){
Assertions.assertThat(surveyUnitServiceStatic.findByInterrogationId(DEFAULT_INTERROGATION_ID)).filteredOn(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -141,4 +141,39 @@ void get_latest_should_return_edited(){
//THEN
Assertions.assertThat(surveyUnitModels).isNotNull().hasSize(2);
}

@Test
void findByIdsUsualSurveyUnitAndCollectionInstrument_should_return_survey_units_from_persistence_port() {
//GIVEN
List<SurveyUnitDocument> surveyUnitDocuments = new ArrayList<>();

SurveyUnitDocument surveyUnitDocument = new SurveyUnitDocument();
surveyUnitDocument.setMode(String.valueOf(Mode.WEB));
surveyUnitDocument.setUsualSurveyUnitId(TestConstants.DEFAULT_SURVEY_UNIT_ID);
surveyUnitDocument.setState(DataState.COLLECTED.toString());
surveyUnitDocument.setRecordDate(LocalDateTime.now().minusMinutes(1));
surveyUnitDocument.setCollectedVariables(new ArrayList<>());
surveyUnitDocument.getCollectedVariables().add(new VariableDocument());
surveyUnitDocument.getCollectedVariables().getFirst().setVarId("VAR1");
surveyUnitDocument.getCollectedVariables().getFirst().setIteration(1);
surveyUnitDocument.getCollectedVariables().getFirst().setValue("VAR1");
surveyUnitDocuments.add(surveyUnitDocument);


doReturn(SurveyUnitDocumentMapper.INSTANCE.listDocumentToListModel(surveyUnitDocuments))
.when(surveyUnitPersistencePortStub).findByUsualSurveyUnitAndCollectionInstrumentIds(
TestConstants.DEFAULT_SURVEY_UNIT_ID,
TestConstants.DEFAULT_COLLECTION_INSTRUMENT_ID
);

//WHEN
List<SurveyUnitModel> surveyUnitModels = surveyUnitService.findByIdsUsualSurveyUnitAndCollectionInstrument(
TestConstants.DEFAULT_SURVEY_UNIT_ID,
TestConstants.DEFAULT_COLLECTION_INSTRUMENT_ID
);

//THEN
Assertions.assertThat(surveyUnitModels).isNotNull().hasSize(1);
Assertions.assertThat(surveyUnitModels.getFirst().getUsualSurveyUnitId()).isEqualTo(TestConstants.DEFAULT_SURVEY_UNIT_ID);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,17 @@ public List<SurveyUnitModel> findByIds(String interrogationId, String collection
return surveyUnitModelList;
}

@Override
public List<SurveyUnitModel> findByUsualSurveyUnitAndCollectionInstrumentIds(String usualSurveyUnitId, String collectionInstrumentId) {
List<SurveyUnitModel> surveyUnitModelList = new ArrayList<>();
for(SurveyUnitModel SurveyUnitModel : mongoStub){
if(SurveyUnitModel.getUsualSurveyUnitId().equals(usualSurveyUnitId) && SurveyUnitModel.getCollectionInstrumentId().equals(collectionInstrumentId))
surveyUnitModelList.add(SurveyUnitModel);
}

return surveyUnitModelList;
}

//========= OPTIMISATIONS PERFS (START) ==========
/**
* @author Adrien Marchal
Expand Down
Loading