From aa9981b9a5f3fe484a9b840f780be61e318d8ff9 Mon Sep 17 00:00:00 2001 From: Emmanuel Date: Mon, 9 Dec 2024 10:48:26 +0000 Subject: [PATCH 1/2] fix: try docker compose --- compose.yaml | 17 +++++++++++++++++ src/main/resources/rmes-api.properties | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 compose.yaml diff --git a/compose.yaml b/compose.yaml new file mode 100644 index 00000000..9e225612 --- /dev/null +++ b/compose.yaml @@ -0,0 +1,17 @@ +name: MetaData API +services: + metadata-api: + build: . + ports: + - "8080:8080" + environment: + - fr.insee.rmes.api.sparqlEndpoint=http://graphdb:7200 + links: + - graphdb + graphdb: + image: ontotext/graphdb:10.6.4 + restart: always + ports: + - "7200:7200" + environment: + GDB_JAVA_OPTS: "-Xmx1g -Xms512M" \ No newline at end of file diff --git a/src/main/resources/rmes-api.properties b/src/main/resources/rmes-api.properties index 95f5a446..64e756a6 100644 --- a/src/main/resources/rmes-api.properties +++ b/src/main/resources/rmes-api.properties @@ -2,7 +2,7 @@ fr.insee.rmes.api.log.configuration = log4j2.xml # database -fr.insee.rmes.api.sparqlEndpoint = XXXXX +fr.insee.rmes.api.sparqlEndpoint = http://graphdb:7200 fr.insee.rmes.api.baseHost = http://id.insee.fr # files storage From f004858243c16a8ba48d916f18cb7132799fdb86 Mon Sep 17 00:00:00 2001 From: Emmanuel Date: Tue, 10 Dec 2024 10:16:59 +0000 Subject: [PATCH 2/2] feat: add unit test --- .../OperationsApiServiceTest.java | 48 +++++++++++++++++-- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/src/test/java/fr/insee/rmes/api/operations/pseudointegrationtest/OperationsApiServiceTest.java b/src/test/java/fr/insee/rmes/api/operations/pseudointegrationtest/OperationsApiServiceTest.java index 52fcfe77..a6b6e7c4 100644 --- a/src/test/java/fr/insee/rmes/api/operations/pseudointegrationtest/OperationsApiServiceTest.java +++ b/src/test/java/fr/insee/rmes/api/operations/pseudointegrationtest/OperationsApiServiceTest.java @@ -1,10 +1,12 @@ package fr.insee.rmes.api.operations.pseudointegrationtest; import fr.insee.rmes.api.operations.OperationsApiService; +import fr.insee.rmes.config.Configuration; import fr.insee.rmes.modeles.operations.SimpleObject; import fr.insee.rmes.modeles.operations.documentations.Document; import fr.insee.rmes.modeles.operations.documentations.Rubrique; import fr.insee.rmes.modeles.operations.documentations.RubriqueRichText; +import fr.insee.rmes.utils.FileUtils; import fr.insee.rmes.utils.Lang; import fr.insee.rmes.utils.SparqlUtils; import org.junit.jupiter.api.Assertions; @@ -16,12 +18,15 @@ import org.junit.jupiter.params.provider.ValueSource; import org.mockito.InjectMocks; import org.mockito.Mock; +import org.mockito.MockedStatic; import org.mockito.Mockito; import org.mockito.junit.jupiter.MockitoExtension; -import java.util.ArrayList; -import java.util.List; +import java.util.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) @@ -42,13 +47,46 @@ class OperationsApiServiceTest { private static final String MOCK_CSV_GET_DOCUMENTS_EMPTY = "url,labelLg1,labelLg2,dateMiseAJour,langue"; - private static List EXPECTED_RUBRICS ; + private static List EXPECTED_RUBRICS ; @BeforeEach public void init() { initExpected(); } + @Test + void shouldReturnEmptyMapWhenFileIsEmpty() { + try (MockedStatic mockedConfigurationFactory = Mockito.mockStatic(Configuration.class); + MockedStatic mockedFileUtilsFactory = Mockito.mockStatic(FileUtils.class)) { + + mockedConfigurationFactory.when(() -> Configuration.getFileStorageLocation()).thenReturn("/mock/location"); + mockedFileUtilsFactory.when(() -> FileUtils.readFile(eq("/mock/location/storage/exclusionsInseeFr.txt"), eq(";"))).thenReturn(Collections.emptyList()); + + Map> result = operationsApiService.readExclusions(); + + assertEquals(0, result.size()); + } + } + + @Test + void shouldReturnCorrectMapWhenFileHasValidContent() { + try (MockedStatic mockedConfigurationFactory = Mockito.mockStatic(Configuration.class); + MockedStatic mockedFileUtilsFactory = Mockito.mockStatic(FileUtils.class)) { + + mockedConfigurationFactory.when(() -> Configuration.getFileStorageLocation()).thenReturn("/mock/location"); + mockedFileUtilsFactory.when(() -> FileUtils.readFile(eq("/mock/location/storage/exclusionsInseeFr.txt"), eq(";"))).thenReturn(Arrays.asList( + Arrays.asList("TYPE1", "ID1"), + Arrays.asList("TYPE1", "ID2"), + Arrays.asList("TYPE2", "ID3") + )); + + Map> result = operationsApiService.readExclusions(); + + assertEquals(2, result.size()); + assertEquals(Arrays.asList("ID1", "ID2"), result.get("TYPE1")); + assertEquals(Collections.singletonList("ID3"), result.get("TYPE2")); + } + } @ParameterizedTest @ValueSource(strings = {""}) @@ -56,7 +94,7 @@ public void init() { void givenGetListRubriques_whenQueryReturnNothing_thenResponseIsEmpty(String id) { when(mockSparqlUtils.executeSparqlQuery(Mockito.anyString())).thenReturn(""); List liste = operationsApiService.getListRubriques(id); - Assertions.assertEquals(new ArrayList(),liste); + assertEquals(new ArrayList(),liste); } @@ -67,7 +105,7 @@ void givenGetListRubriques_whenQueryOk_thenResponseIsOk() { .thenReturn(MOCK_CSV_GET_DOCUMENTS_EMPTY)//get documents fr .thenReturn(MOCK_CSV_GET_DOCUMENTS_EMPTY);//get documents en List liste = operationsApiService.getListRubriques("1774"); - Assertions.assertEquals(EXPECTED_RUBRICS,liste); + assertEquals(EXPECTED_RUBRICS,liste); }