diff --git a/CHANGELOG.md b/CHANGELOG.md index 901a6e87..6e3b6f92 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog + ## 2.2.1 [TODO] +### Fixed +- Get contexts with review uses collectionInstrumentId + ## 2.2.0 [2026-02-05] ### Added - add isCapturedIndirectly variable to responses diff --git a/src/main/java/fr/insee/genesis/controller/rest/responses/QuestionnaireController.java b/src/main/java/fr/insee/genesis/controller/rest/responses/QuestionnaireController.java index 5e57bf5b..840685c8 100644 --- a/src/main/java/fr/insee/genesis/controller/rest/responses/QuestionnaireController.java +++ b/src/main/java/fr/insee/genesis/controller/rest/responses/QuestionnaireController.java @@ -50,7 +50,7 @@ public ResponseEntity> getQuestionnaires() { public ResponseEntity> getQuestionnairesWithReview( @RequestParam(value = "withReview") boolean withReview ) { - List questionnaires = dataProcessingContextService.getPartitionIds(withReview); + List questionnaires = dataProcessingContextService.getCollectionInstrumentIds(withReview); return ResponseEntity.ok(questionnaires); } diff --git a/src/main/java/fr/insee/genesis/domain/ports/api/DataProcessingContextApiPort.java b/src/main/java/fr/insee/genesis/domain/ports/api/DataProcessingContextApiPort.java index e38d4ac8..e6b6602f 100644 --- a/src/main/java/fr/insee/genesis/domain/ports/api/DataProcessingContextApiPort.java +++ b/src/main/java/fr/insee/genesis/domain/ports/api/DataProcessingContextApiPort.java @@ -44,8 +44,11 @@ void saveKraftwerkExecutionScheduleByCollectionInstrumentId(String collectionIns DataProcessingContextModel getContextByCollectionInstrumentId(String collectionInstrumentId); + @Deprecated(forRemoval = true) List getPartitionIds(boolean withReview); + List getCollectionInstrumentIds(boolean withReview); + /** * Gets the review indicator for a partition * @param partitionId id of the partition diff --git a/src/main/java/fr/insee/genesis/domain/service/context/DataProcessingContextService.java b/src/main/java/fr/insee/genesis/domain/service/context/DataProcessingContextService.java index 958b09e6..43cfb563 100644 --- a/src/main/java/fr/insee/genesis/domain/service/context/DataProcessingContextService.java +++ b/src/main/java/fr/insee/genesis/domain/service/context/DataProcessingContextService.java @@ -256,11 +256,11 @@ public DataProcessingContextModel getContext(String interrogationId) throws Gene @Override public DataProcessingContextModel getContextByCollectionInstrumentId(String collectionInstrumentId){ - return dataProcessingContextPersistancePort.findByCollectionInstrumentId(collectionInstrumentId) - ; + return dataProcessingContextPersistancePort.findByCollectionInstrumentId(collectionInstrumentId); } @Override + @Deprecated(forRemoval = true) public List getPartitionIds(boolean withReview){ List partitionIds = new ArrayList<>(); for(DataProcessingContextModel dataProcessingContextModel @@ -272,6 +272,20 @@ public List getPartitionIds(boolean withReview){ return partitionIds; } + @Override + public List getCollectionInstrumentIds(boolean withReview) { + List collectionInstrumentIds = new ArrayList<>(); + for(DataProcessingContextModel dataProcessingContextModel + : DataProcessingContextMapper.INSTANCE.listDocumentToListModel( + dataProcessingContextPersistancePort.findAllByReview(withReview) + )){ + if(dataProcessingContextModel.getCollectionInstrumentId() != null) { + collectionInstrumentIds.add(dataProcessingContextModel.getCollectionInstrumentId()); + } + } + return collectionInstrumentIds; + } + @Deprecated(forRemoval = true) @Override public boolean getReviewByPartitionId(String partitionId) throws GenesisException { diff --git a/src/main/java/fr/insee/genesis/infrastructure/document/context/DataProcessingContextDocument.java b/src/main/java/fr/insee/genesis/infrastructure/document/context/DataProcessingContextDocument.java index 079886f7..2a4b5b8e 100644 --- a/src/main/java/fr/insee/genesis/infrastructure/document/context/DataProcessingContextDocument.java +++ b/src/main/java/fr/insee/genesis/infrastructure/document/context/DataProcessingContextDocument.java @@ -18,6 +18,7 @@ public class DataProcessingContextDocument{ @Id private ObjectId id; @Indexed + @Deprecated private String partitionId; //ex Survey Name, campaignId @Indexed private String collectionInstrumentId; // QuestionnaireId diff --git a/src/test/java/fr/insee/genesis/controller/rest/responses/QuestionnaireControllerTest.java b/src/test/java/fr/insee/genesis/controller/rest/responses/QuestionnaireControllerTest.java index 236cdc1e..094e32c5 100644 --- a/src/test/java/fr/insee/genesis/controller/rest/responses/QuestionnaireControllerTest.java +++ b/src/test/java/fr/insee/genesis/controller/rest/responses/QuestionnaireControllerTest.java @@ -78,7 +78,7 @@ void getQuestionnairesWithReviewTest() { Assertions.assertThat(response.getBody()).isNotNull().isEmpty(); DataProcessingContextDocument doc = new DataProcessingContextDocument(); - doc.setPartitionId(DEFAULT_COLLECTION_INSTRUMENT_ID); + doc.setCollectionInstrumentId(DEFAULT_COLLECTION_INSTRUMENT_ID); doc.setKraftwerkExecutionScheduleList(new ArrayList<>()); doc.setWithReview(true); dataProcessingContextPersistancePortStub.getMongoStub().add(doc); @@ -89,7 +89,7 @@ void getQuestionnairesWithReviewTest() { DEFAULT_COLLECTION_INSTRUMENT_ID); DataProcessingContextDocument doc2 = new DataProcessingContextDocument(); - doc2.setPartitionId(questionnaireId); + doc2.setCollectionInstrumentId(questionnaireId); doc2.setKraftwerkExecutionScheduleList(new ArrayList<>()); doc2.setWithReview(false); dataProcessingContextPersistancePortStub.getMongoStub().add(doc2); @@ -111,7 +111,7 @@ void getQuestionnairesWithoutReviewTest() { Assertions.assertThat(response.getBody()).isNotNull().isEmpty(); DataProcessingContextDocument doc = new DataProcessingContextDocument(); - doc.setPartitionId(DEFAULT_COLLECTION_INSTRUMENT_ID); + doc.setCollectionInstrumentId(DEFAULT_COLLECTION_INSTRUMENT_ID); doc.setKraftwerkExecutionScheduleList(new ArrayList<>()); doc.setWithReview(false); dataProcessingContextPersistancePortStub.getMongoStub().add(doc); @@ -122,7 +122,7 @@ void getQuestionnairesWithoutReviewTest() { DEFAULT_COLLECTION_INSTRUMENT_ID); DataProcessingContextDocument doc2 = new DataProcessingContextDocument(); - doc2.setPartitionId(questionnaireId); + doc2.setCollectionInstrumentId(questionnaireId); doc2.setKraftwerkExecutionScheduleList(new ArrayList<>()); doc2.setWithReview(true); dataProcessingContextPersistancePortStub.getMongoStub().add(doc2); diff --git a/src/test/java/fr/insee/genesis/controller/rest/responses/QuestionnaireControllerUnitTest.java b/src/test/java/fr/insee/genesis/controller/rest/responses/QuestionnaireControllerUnitTest.java new file mode 100644 index 00000000..cd764441 --- /dev/null +++ b/src/test/java/fr/insee/genesis/controller/rest/responses/QuestionnaireControllerUnitTest.java @@ -0,0 +1,34 @@ +package fr.insee.genesis.controller.rest.responses; + +import fr.insee.genesis.domain.ports.api.DataProcessingContextApiPort; +import fr.insee.genesis.domain.ports.api.SurveyUnitApiPort; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.mockito.ArgumentMatchers.anyBoolean; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + +class QuestionnaireControllerUnitTest { + + private QuestionnaireController questionnaireController; + private DataProcessingContextApiPort dataProcessingContextApiPort; + + @BeforeEach + void setUp() { + dataProcessingContextApiPort = mock(DataProcessingContextApiPort.class); + questionnaireController = new QuestionnaireController( + mock(SurveyUnitApiPort.class), + dataProcessingContextApiPort + ); + } + + @Test + void getQuestionnairesWithReviewTest() { + //WHEN + questionnaireController.getQuestionnairesWithReview(true); + + verify(dataProcessingContextApiPort, times(1)).getCollectionInstrumentIds(anyBoolean()); + } +} \ No newline at end of file diff --git a/src/test/java/fr/insee/genesis/domain/service/context/DataProcessingContextServiceUnitTest.java b/src/test/java/fr/insee/genesis/domain/service/context/DataProcessingContextServiceUnitTest.java index 2be7cc2d..97361104 100644 --- a/src/test/java/fr/insee/genesis/domain/service/context/DataProcessingContextServiceUnitTest.java +++ b/src/test/java/fr/insee/genesis/domain/service/context/DataProcessingContextServiceUnitTest.java @@ -6,6 +6,7 @@ import fr.insee.genesis.domain.ports.spi.DataProcessingContextPersistancePort; import fr.insee.genesis.domain.ports.spi.SurveyUnitPersistencePort; import fr.insee.genesis.exceptions.GenesisException; +import fr.insee.genesis.infrastructure.document.context.DataProcessingContextDocument; import lombok.SneakyThrows; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.BeforeEach; @@ -16,6 +17,7 @@ import java.util.List; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; @@ -111,7 +113,6 @@ void getContext_multiple_CollectionInstruementIds_test() { @Test @SneakyThrows void getContext_no_CollectionInstruementIds_test() { - //GIVEN //GIVEN String collectionInstrumentId = TestConstants.DEFAULT_COLLECTION_INSTRUMENT_ID; String interrogationId = TestConstants.DEFAULT_INTERROGATION_ID; @@ -133,4 +134,27 @@ void getContext_no_CollectionInstruementIds_test() { dataProcessingContextService.getContext(TestConstants.DEFAULT_INTERROGATION_ID)) .isInstanceOf(GenesisException.class); } + + @Test + void getCollectionInstrumentIdsWithReview_test() { + //GIVEN + DataProcessingContextDocument dataProcessingContextDocument = new DataProcessingContextDocument(); + dataProcessingContextDocument.setCollectionInstrumentId(TestConstants.DEFAULT_COLLECTION_INSTRUMENT_ID); + dataProcessingContextDocument.setWithReview(true); + //null collectionInstrumentId + DataProcessingContextDocument dataProcessingContextDocumentNull = new DataProcessingContextDocument(); + dataProcessingContextDocumentNull.setCollectionInstrumentId(null); + dataProcessingContextDocumentNull.setWithReview(true); + List documents = List.of( + dataProcessingContextDocument, + dataProcessingContextDocumentNull + ); + doReturn(documents).when(dataProcessingContextPersistancePort).findAllByReview(anyBoolean()); + + //WHEN + List collectionInstrumentIds = dataProcessingContextService.getCollectionInstrumentIds(true); + + //THEN + Assertions.assertThat(collectionInstrumentIds).containsExactly(TestConstants.DEFAULT_COLLECTION_INSTRUMENT_ID); + } } \ No newline at end of file