Skip to content

Commit 9f747cd

Browse files
committed
add tests
1 parent 28072a9 commit 9f747cd

File tree

3 files changed

+85
-5
lines changed

3 files changed

+85
-5
lines changed

src/test/java/fr/insee/genesis/domain/service/rawdata/LunaticJsonRawDataServiceTest.java

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import fr.insee.genesis.domain.service.surveyunit.SurveyUnitQualityService;
1616
import fr.insee.genesis.domain.service.surveyunit.SurveyUnitService;
1717
import fr.insee.genesis.domain.utils.JsonUtils;
18+
import fr.insee.genesis.exceptions.GenesisException;
1819
import fr.insee.genesis.infrastructure.mappers.DataProcessingContextMapper;
1920
import fr.insee.genesis.infrastructure.mappers.LunaticJsonRawDataDocumentMapper;
2021
import fr.insee.genesis.infrastructure.utils.FileUtils;
@@ -692,4 +693,46 @@ void getValueString_double_test(){
692693

693694
Assertions.assertThat(getValueString(doubleObject)).isEqualTo("101010101010.111");
694695
}
696+
697+
@Test
698+
void reprocessRawData_should_return_empty_result_when_no_processed_interrogation_ids_found() throws Exception {
699+
// GIVEN
700+
lunaticJsonRawDataPersistanceStub.getMongoStub().clear();
701+
surveyUnitPersistencePortStub.getMongoStub().clear();
702+
703+
String questionnaireId = "TESTIDQUEST";
704+
705+
// WHEN
706+
DataProcessResult result = lunaticJsonRawDataService.reprocessRawData(questionnaireId, null, null);
707+
708+
// THEN
709+
Assertions.assertThat(result).isNotNull();
710+
Assertions.assertThat(result.dataCount()).isEqualTo(0);
711+
Assertions.assertThat(result.formattedDataCount()).isEqualTo(0);
712+
Assertions.assertThat(result.errors()).isEmpty();
713+
}
714+
715+
@Test
716+
void reprocessRawData_should_throw_when_endDate_is_provided_without_sinceDate() {
717+
String questionnaireId = "TESTIDQUEST";
718+
LocalDateTime endDate = LocalDateTime.now();
719+
720+
Assertions.assertThatThrownBy(() ->
721+
lunaticJsonRawDataService.reprocessRawData(questionnaireId, null, endDate))
722+
.isInstanceOf(GenesisException.class)
723+
.hasMessage("endDate cannot be provided without sinceDate");
724+
}
725+
726+
@Test
727+
void reprocessRawData_should_throw_when_endDate_is_before_sinceDate() {
728+
String questionnaireId = "TESTIDQUEST";
729+
LocalDateTime sinceDate = LocalDateTime.of(2024, 1, 10, 10, 0);
730+
LocalDateTime endDate = LocalDateTime.of(2024, 1, 9, 10, 0);
731+
732+
Assertions.assertThatThrownBy(() ->
733+
lunaticJsonRawDataService.reprocessRawData(questionnaireId, sinceDate, endDate))
734+
.isInstanceOf(GenesisException.class)
735+
.hasMessage("endDate must be after or equal to sinceDate");
736+
}
737+
695738
}

src/test/java/fr/insee/genesis/stubs/LunaticJsonMongoDBRepositoryStub.java

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -197,13 +197,30 @@ public boolean existsByInterrogationId(String interrogationId) {
197197
}
198198

199199
@Override
200-
public List<String> findProcessedInterrogationIdsByQuestionnaireIdAndRecordDateBetween(String questionnaireId, LocalDateTime sinceDate, LocalDateTime endDate) {
201-
return List.of();
200+
public List<String> findProcessedInterrogationIdsByQuestionnaireId(String questionnaireId) {
201+
return documents.stream()
202+
.filter(doc -> Objects.equals(doc.questionnaireId(), questionnaireId))
203+
.filter(doc -> doc.processDate() != null)
204+
.map(LunaticJsonRawDataDocument::interrogationId)
205+
.distinct()
206+
.toList();
202207
}
203208

204209
@Override
205-
public List<String> findProcessedInterrogationIdsByQuestionnaireId(String questionnaireId) {
206-
return List.of();
210+
public List<String> findProcessedInterrogationIdsByQuestionnaireIdAndRecordDateBetween(
211+
String questionnaireId,
212+
LocalDateTime sinceDate,
213+
LocalDateTime endDate
214+
) {
215+
return documents.stream()
216+
.filter(doc -> Objects.equals(doc.questionnaireId(), questionnaireId))
217+
.filter(doc -> doc.processDate() != null)
218+
.filter(doc -> doc.recordDate() != null)
219+
.filter(doc -> !doc.recordDate().isBefore(sinceDate))
220+
.filter(doc -> !doc.recordDate().isAfter(endDate))
221+
.map(LunaticJsonRawDataDocument::interrogationId)
222+
.distinct()
223+
.toList();
207224
}
208225

209226
// Implémentations vides requises par MongoRepository

src/test/java/fr/insee/genesis/stubs/LunaticJsonRawDataPersistanceStub.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,27 @@ public void updateProcessDates(String campaignId, Set<String> interrogationIds)
130130

131131
@Override
132132
public void resetProcessDates(String questionnaireId, Set<String> interrogationIds) {
133-
return;
133+
for (int i = 0; i < mongoStub.size(); i++) {
134+
LunaticJsonRawDataDocument document = mongoStub.get(i);
135+
136+
if (document.questionnaireId().equals(questionnaireId)
137+
&& interrogationIds.contains(document.interrogationId())) {
138+
139+
LunaticJsonRawDataDocument newDocument = LunaticJsonRawDataDocument.builder()
140+
.id(document.id())
141+
.campaignId(document.campaignId())
142+
.questionnaireId(document.questionnaireId())
143+
.interrogationId(document.interrogationId())
144+
.idUE(document.idUE())
145+
.mode(document.mode())
146+
.data(document.data())
147+
.recordDate(document.recordDate())
148+
.processDate(null)
149+
.build();
150+
151+
mongoStub.set(i, newDocument);
152+
}
153+
}
134154
}
135155

136156
@Override

0 commit comments

Comments
 (0)