Skip to content

Commit 235f75b

Browse files
Merge pull request #399 from InseeFr/fixGetCollectionInstrumentsWithReview
Get collection instruments ids with review instead of partitionId + partitionId deprecation
2 parents ec8afda + 68ee098 commit 235f75b

8 files changed

Lines changed: 88 additions & 8 deletions

File tree

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changelog
22

3+
## 2.2.1 [TODO]
4+
### Fixed
5+
- Get contexts with review uses collectionInstrumentId
6+
37
## 2.2.0 [2026-02-05]
48
### Added
59
- add isCapturedIndirectly variable to responses

src/main/java/fr/insee/genesis/controller/rest/responses/QuestionnaireController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public ResponseEntity<Set<String>> getQuestionnaires() {
5050
public ResponseEntity<List<String>> getQuestionnairesWithReview(
5151
@RequestParam(value = "withReview") boolean withReview
5252
) {
53-
List<String> questionnaires = dataProcessingContextService.getPartitionIds(withReview);
53+
List<String> questionnaires = dataProcessingContextService.getCollectionInstrumentIds(withReview);
5454
return ResponseEntity.ok(questionnaires);
5555
}
5656

src/main/java/fr/insee/genesis/domain/ports/api/DataProcessingContextApiPort.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,11 @@ void saveKraftwerkExecutionScheduleByCollectionInstrumentId(String collectionIns
4444

4545
DataProcessingContextModel getContextByCollectionInstrumentId(String collectionInstrumentId);
4646

47+
@Deprecated(forRemoval = true)
4748
List<String> getPartitionIds(boolean withReview);
4849

50+
List<String> getCollectionInstrumentIds(boolean withReview);
51+
4952
/**
5053
* Gets the review indicator for a partition
5154
* @param partitionId id of the partition

src/main/java/fr/insee/genesis/domain/service/context/DataProcessingContextService.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -256,11 +256,11 @@ public DataProcessingContextModel getContext(String interrogationId) throws Gene
256256

257257
@Override
258258
public DataProcessingContextModel getContextByCollectionInstrumentId(String collectionInstrumentId){
259-
return dataProcessingContextPersistancePort.findByCollectionInstrumentId(collectionInstrumentId)
260-
;
259+
return dataProcessingContextPersistancePort.findByCollectionInstrumentId(collectionInstrumentId);
261260
}
262261

263262
@Override
263+
@Deprecated(forRemoval = true)
264264
public List<String> getPartitionIds(boolean withReview){
265265
List<String> partitionIds = new ArrayList<>();
266266
for(DataProcessingContextModel dataProcessingContextModel
@@ -272,6 +272,20 @@ public List<String> getPartitionIds(boolean withReview){
272272
return partitionIds;
273273
}
274274

275+
@Override
276+
public List<String> getCollectionInstrumentIds(boolean withReview) {
277+
List<String> collectionInstrumentIds = new ArrayList<>();
278+
for(DataProcessingContextModel dataProcessingContextModel
279+
: DataProcessingContextMapper.INSTANCE.listDocumentToListModel(
280+
dataProcessingContextPersistancePort.findAllByReview(withReview)
281+
)){
282+
if(dataProcessingContextModel.getCollectionInstrumentId() != null) {
283+
collectionInstrumentIds.add(dataProcessingContextModel.getCollectionInstrumentId());
284+
}
285+
}
286+
return collectionInstrumentIds;
287+
}
288+
275289
@Deprecated(forRemoval = true)
276290
@Override
277291
public boolean getReviewByPartitionId(String partitionId) throws GenesisException {

src/main/java/fr/insee/genesis/infrastructure/document/context/DataProcessingContextDocument.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ public class DataProcessingContextDocument{
1818
@Id
1919
private ObjectId id;
2020
@Indexed
21+
@Deprecated
2122
private String partitionId; //ex Survey Name, campaignId
2223
@Indexed
2324
private String collectionInstrumentId; // QuestionnaireId

src/test/java/fr/insee/genesis/controller/rest/responses/QuestionnaireControllerTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ void getQuestionnairesWithReviewTest() {
7878
Assertions.assertThat(response.getBody()).isNotNull().isEmpty();
7979

8080
DataProcessingContextDocument doc = new DataProcessingContextDocument();
81-
doc.setPartitionId(DEFAULT_COLLECTION_INSTRUMENT_ID);
81+
doc.setCollectionInstrumentId(DEFAULT_COLLECTION_INSTRUMENT_ID);
8282
doc.setKraftwerkExecutionScheduleList(new ArrayList<>());
8383
doc.setWithReview(true);
8484
dataProcessingContextPersistancePortStub.getMongoStub().add(doc);
@@ -89,7 +89,7 @@ void getQuestionnairesWithReviewTest() {
8989
DEFAULT_COLLECTION_INSTRUMENT_ID);
9090

9191
DataProcessingContextDocument doc2 = new DataProcessingContextDocument();
92-
doc2.setPartitionId(questionnaireId);
92+
doc2.setCollectionInstrumentId(questionnaireId);
9393
doc2.setKraftwerkExecutionScheduleList(new ArrayList<>());
9494
doc2.setWithReview(false);
9595
dataProcessingContextPersistancePortStub.getMongoStub().add(doc2);
@@ -111,7 +111,7 @@ void getQuestionnairesWithoutReviewTest() {
111111
Assertions.assertThat(response.getBody()).isNotNull().isEmpty();
112112

113113
DataProcessingContextDocument doc = new DataProcessingContextDocument();
114-
doc.setPartitionId(DEFAULT_COLLECTION_INSTRUMENT_ID);
114+
doc.setCollectionInstrumentId(DEFAULT_COLLECTION_INSTRUMENT_ID);
115115
doc.setKraftwerkExecutionScheduleList(new ArrayList<>());
116116
doc.setWithReview(false);
117117
dataProcessingContextPersistancePortStub.getMongoStub().add(doc);
@@ -122,7 +122,7 @@ void getQuestionnairesWithoutReviewTest() {
122122
DEFAULT_COLLECTION_INSTRUMENT_ID);
123123

124124
DataProcessingContextDocument doc2 = new DataProcessingContextDocument();
125-
doc2.setPartitionId(questionnaireId);
125+
doc2.setCollectionInstrumentId(questionnaireId);
126126
doc2.setKraftwerkExecutionScheduleList(new ArrayList<>());
127127
doc2.setWithReview(true);
128128
dataProcessingContextPersistancePortStub.getMongoStub().add(doc2);
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package fr.insee.genesis.controller.rest.responses;
2+
3+
import fr.insee.genesis.domain.ports.api.DataProcessingContextApiPort;
4+
import fr.insee.genesis.domain.ports.api.SurveyUnitApiPort;
5+
import org.junit.jupiter.api.BeforeEach;
6+
import org.junit.jupiter.api.Test;
7+
8+
import static org.mockito.ArgumentMatchers.anyBoolean;
9+
import static org.mockito.Mockito.mock;
10+
import static org.mockito.Mockito.times;
11+
import static org.mockito.Mockito.verify;
12+
13+
class QuestionnaireControllerUnitTest {
14+
15+
private QuestionnaireController questionnaireController;
16+
private DataProcessingContextApiPort dataProcessingContextApiPort;
17+
18+
@BeforeEach
19+
void setUp() {
20+
dataProcessingContextApiPort = mock(DataProcessingContextApiPort.class);
21+
questionnaireController = new QuestionnaireController(
22+
mock(SurveyUnitApiPort.class),
23+
dataProcessingContextApiPort
24+
);
25+
}
26+
27+
@Test
28+
void getQuestionnairesWithReviewTest() {
29+
//WHEN
30+
questionnaireController.getQuestionnairesWithReview(true);
31+
32+
verify(dataProcessingContextApiPort, times(1)).getCollectionInstrumentIds(anyBoolean());
33+
}
34+
}

src/test/java/fr/insee/genesis/domain/service/context/DataProcessingContextServiceUnitTest.java

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import fr.insee.genesis.domain.ports.spi.DataProcessingContextPersistancePort;
77
import fr.insee.genesis.domain.ports.spi.SurveyUnitPersistencePort;
88
import fr.insee.genesis.exceptions.GenesisException;
9+
import fr.insee.genesis.infrastructure.document.context.DataProcessingContextDocument;
910
import lombok.SneakyThrows;
1011
import org.assertj.core.api.Assertions;
1112
import org.junit.jupiter.api.BeforeEach;
@@ -16,6 +17,7 @@
1617
import java.util.List;
1718

1819
import static org.mockito.ArgumentMatchers.any;
20+
import static org.mockito.ArgumentMatchers.anyBoolean;
1921
import static org.mockito.Mockito.doReturn;
2022
import static org.mockito.Mockito.mock;
2123

@@ -111,7 +113,6 @@ void getContext_multiple_CollectionInstruementIds_test() {
111113
@Test
112114
@SneakyThrows
113115
void getContext_no_CollectionInstruementIds_test() {
114-
//GIVEN
115116
//GIVEN
116117
String collectionInstrumentId = TestConstants.DEFAULT_COLLECTION_INSTRUMENT_ID;
117118
String interrogationId = TestConstants.DEFAULT_INTERROGATION_ID;
@@ -133,4 +134,27 @@ void getContext_no_CollectionInstruementIds_test() {
133134
dataProcessingContextService.getContext(TestConstants.DEFAULT_INTERROGATION_ID))
134135
.isInstanceOf(GenesisException.class);
135136
}
137+
138+
@Test
139+
void getCollectionInstrumentIdsWithReview_test() {
140+
//GIVEN
141+
DataProcessingContextDocument dataProcessingContextDocument = new DataProcessingContextDocument();
142+
dataProcessingContextDocument.setCollectionInstrumentId(TestConstants.DEFAULT_COLLECTION_INSTRUMENT_ID);
143+
dataProcessingContextDocument.setWithReview(true);
144+
//null collectionInstrumentId
145+
DataProcessingContextDocument dataProcessingContextDocumentNull = new DataProcessingContextDocument();
146+
dataProcessingContextDocumentNull.setCollectionInstrumentId(null);
147+
dataProcessingContextDocumentNull.setWithReview(true);
148+
List<DataProcessingContextDocument> documents = List.of(
149+
dataProcessingContextDocument,
150+
dataProcessingContextDocumentNull
151+
);
152+
doReturn(documents).when(dataProcessingContextPersistancePort).findAllByReview(anyBoolean());
153+
154+
//WHEN
155+
List<String> collectionInstrumentIds = dataProcessingContextService.getCollectionInstrumentIds(true);
156+
157+
//THEN
158+
Assertions.assertThat(collectionInstrumentIds).containsExactly(TestConstants.DEFAULT_COLLECTION_INSTRUMENT_ID);
159+
}
136160
}

0 commit comments

Comments
 (0)