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
@@ -1,6 +1,5 @@
package fr.insee.genesis.controller.rest.responses;

import fr.insee.genesis.controller.dto.rawdata.LunaticJsonRawDataUnprocessedDto;
import fr.insee.genesis.domain.model.surveyunit.Mode;
import fr.insee.genesis.domain.model.surveyunit.rawdata.DataProcessResult;
import fr.insee.genesis.domain.model.surveyunit.rawdata.LunaticJsonRawDataModel;
Expand All @@ -11,6 +10,7 @@
import fr.insee.genesis.exceptions.GenesisException;
import fr.insee.genesis.infrastructure.repository.RawResponseInputRepository;
import fr.insee.modelefiliere.RawResponseDto;
import io.swagger.v3.oas.annotations.Hidden;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import jakarta.validation.Valid;
Expand Down Expand Up @@ -139,14 +139,6 @@ public ResponseEntity<List<String>> getUnprocessedCollectionInstrument(){
}

//GET unprocessed
@Operation(summary = "Get campaign id and interrogationId from all unprocessed raw json data")
@GetMapping(path = "/responses/raw/lunatic-json/get/unprocessed")
@PreAuthorize("hasRole('SCHEDULER')")
public ResponseEntity<List<LunaticJsonRawDataUnprocessedDto>> getUnprocessedJsonRawData() {
log.info("Try to get unprocessed raw JSON datas...");
return ResponseEntity.ok(lunaticJsonRawDataApiPort.getUnprocessedDataIds());
}

@Operation(summary = "Get campaign id and interrogationId from all unprocessed raw json data")
@GetMapping(path = "/responses/raw/lunatic-json/get/unprocessed/questionnaireIds")
@PreAuthorize("hasRole('SCHEDULER')")
Expand Down Expand Up @@ -266,4 +258,37 @@ public ResponseEntity<Void> exists(@PathVariable String interrogationId) {
}
return ResponseEntity.notFound().build();
}

//Debug admin endpoints
@Hidden
@Operation(summary = "Get lunatic json raw data")
@GetMapping(path = "/responses/raw/lunatic-json/{collectionInstrumentId}/{mode}/{interrogationId}")
@PreAuthorize("hasRole('ADMIN')")
public ResponseEntity<List<LunaticJsonRawDataModel>> getJsonRawData(
@PathVariable("collectionInstrumentId") String collectionInstrumentId,
@PathVariable("mode") Mode mode,
@PathVariable(INTERROGATION_ID) String interrogationId
) {
return ResponseEntity.ok(lunaticJsonRawDataApiPort.getRawDataByQuestionnaireId(
collectionInstrumentId,
mode,
List.of(interrogationId)
));
}

@Hidden
@Operation(summary = "Get raw response")
@GetMapping(path = "/raw-responses/{collectionInstrumentId}/{mode}/{interrogationId}")
@PreAuthorize("hasRole('ADMIN')")
public ResponseEntity<List<RawResponseModel>> getRawResponses(
@PathVariable("collectionInstrumentId") String collectionInstrumentId,
@PathVariable("mode") Mode mode,
@PathVariable(INTERROGATION_ID) String interrogationId
) {
return ResponseEntity.ok(rawResponseApiPort.getRawResponses(
collectionInstrumentId,
mode,
List.of(interrogationId)
));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ public interface LunaticJsonRawDataApiPort {
List<LunaticJsonRawDataModel> getRawDataByQuestionnaireId(String questionnaireId, Mode mode, List<String> interrogationIdList);
List<SurveyUnitModel> convertRawData(List<LunaticJsonRawDataModel> rawData, VariablesMap variablesMap);

List<LunaticJsonRawDataUnprocessedDto> getUnprocessedDataIds();
Set<String> getUnprocessedDataQuestionnaireIds();
void updateProcessDates(List<SurveyUnitModel> surveyUnitModels);
Set<String> findDistinctQuestionnaireIds();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ public interface LunaticJsonRawDataPersistencePort {
List<LunaticJsonRawDataModel> findRawDataByQuestionnaireId(String questionnaireId, Mode mode, List<String> interrogationIdList);
Page<LunaticJsonRawDataModel> findRawDataByQuestionnaireId(String questionnaireId, Pageable pageable);
List<LunaticJsonRawDataModel> findRawDataByInterrogationId(String interrogationId);
List<LunaticJsonRawDataModel> getAllUnprocessedData();
void updateProcessDates(String campaignId, Set<String> interrogationIds);

Set<String> findDistinctQuestionnaireIds();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -357,22 +357,6 @@ private static Boolean getIsCapturedIndirectly(LunaticJsonRawDataModel rawData)

}

@Override
public List<LunaticJsonRawDataUnprocessedDto> getUnprocessedDataIds() {
List<LunaticJsonRawDataUnprocessedDto> dtos = new ArrayList<>();

for (GroupedInterrogation groupedInterrogation : lunaticJsonRawDataPersistencePort.findUnprocessedIds()) {
for (String interrogationId : groupedInterrogation.interrogationIds()){
dtos.add(LunaticJsonRawDataUnprocessedDto.builder()
.questionnaireId(groupedInterrogation.questionnaireId())
.interrogationId(interrogationId)
.build()
);
}
}
return dtos;
}

@Override
public Set<String> getUnprocessedDataQuestionnaireIds() {
Set<String> unprocessedQuestionnaireIds = lunaticJsonRawDataPersistencePort.findDistinctQuestionnaireIdsByNullProcessDate();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,11 +45,6 @@ public void save(LunaticJsonRawDataModel rawData) {
repository.insert(doc);
}

@Override
public List<LunaticJsonRawDataModel> getAllUnprocessedData() {
return LunaticJsonRawDataDocumentMapper.INSTANCE.listDocumentToListModel(repository.findByNullProcessDate());
}

@Override
public Set<String> findDistinctQuestionnaireIdsByNullProcessDate(){
return new HashSet<>(repository.findDistinctQuestionnaireIdByProcessDateIsNull());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,6 @@ private static Stream<Arguments> endpointsReader() {

private static Stream<Arguments> responseEndpoint() {
return Stream.of(
Arguments.of(GET,"/responses/raw/lunatic-json/get/unprocessed"),
Arguments.of(GET,"/responses/raw/lunatic-json/TOTO"),
Arguments.of(GET,"/raw-responses/TOTO"),
Arguments.of(POST,"/responses/raw/lunatic-json/test/process")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
import java.util.Set;

import static fr.insee.genesis.domain.utils.JsonUtils.jsonToMap;
import static org.hamcrest.Matchers.containsString;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyList;
import static org.mockito.ArgumentMatchers.argThat;
Expand All @@ -53,8 +54,10 @@
import static org.mockito.Mockito.verifyNoInteractions;
import static org.mockito.Mockito.when;
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@Slf4j
Expand Down Expand Up @@ -880,6 +883,60 @@ private void setOldModelTestMockBehaviour(String questionnaireId,
}
}

@Nested
@DisplayName("GET raw responses and lunatic json admin endpoints tests")
class GetRawTests{
@Test
@DisplayName("GET lunatic json Should return 200 with lunaticJsonRawData model")
@WithMockUser(roles = "ADMIN")
@SneakyThrows
void getLunaticJsonRawData_test(){
//GIVEN
String questionnaireId = "quest";
Mode mode = Mode.WEB;
String interrogationId = "interro";
LunaticJsonRawDataDocument lunaticJsonRawDataDocument = LunaticJsonRawDataDocument.builder()
.interrogationId(interrogationId).build();
when(lunaticJsonMongoDBRepository.findByQuestionnaireModeAndInterrogations(
eq(questionnaireId),
eq(mode),
anyList()
)).thenReturn(List.of(lunaticJsonRawDataDocument));

//WHEN + THEN
mockMvc.perform(get("/responses/raw/lunatic-json/%s/%s/%s".formatted(
questionnaireId, mode.getModeName(), interrogationId
)))
.andExpect(status().isOk())
.andExpect(content().string(containsString(interrogationId)));
}

@Test
@DisplayName("GET Raw Response should return 200 with raw response model")
@WithMockUser(roles = "ADMIN")
@SneakyThrows
void getRawResponse_test(){
//GIVEN
String collectionInstrumentId = "collectionInstrumentId";
Mode mode = Mode.WEB;
String interrogationId = "interro";
RawResponseDocument rawResponseDocument = RawResponseDocument.builder().interrogationId(interrogationId)
.build();
when(rawResponseRepository.findByCollectionInstrumentIdAndModeAndInterrogationIdList(
eq(collectionInstrumentId),
eq(mode.getJsonName()),
anyList()
)).thenReturn(List.of(rawResponseDocument));

//WHEN + THEN
mockMvc.perform(get("/raw-responses/%s/%s/%s".formatted(
collectionInstrumentId, mode.toString(), interrogationId
)))
.andExpect(status().isOk())
.andExpect(content().string(containsString(interrogationId)));
}
}

//UTILS
private Map<String, Object> getNewDataMap() {
Map<String, Object> dataMap = new HashMap<>();
Expand Down
Loading
Loading