diff --git a/src/test/java/org/gridsuite/modification/server/modifications/AbstractNetworkModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/AbstractNetworkModificationTest.java index 0ad295977..0e0fee91d 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/AbstractNetworkModificationTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/AbstractNetworkModificationTest.java @@ -18,6 +18,7 @@ import com.powsybl.network.store.iidm.impl.NetworkImpl; import org.gridsuite.modification.server.dto.ModificationInfos; import org.gridsuite.modification.server.dto.NetworkModificationResult; +import org.gridsuite.modification.server.entities.ModificationEntity; import org.gridsuite.modification.server.repositories.NetworkModificationRepository; import org.gridsuite.modification.server.service.ReportService; import org.gridsuite.modification.server.utils.NetworkCreation; @@ -245,8 +246,9 @@ protected void testNetworkModificationsCount(UUID groupUuid, int actualSize) thr /** Save a network modification into the repository and return its UUID. */ protected UUID saveModification(ModificationInfos modificationInfos) { - modificationRepository.saveModifications(TEST_GROUP_ID, List.of(modificationInfos.toEntity())); - return modificationRepository.getModifications(TEST_GROUP_ID, true, true).get(0).getUuid(); + ModificationEntity entity = modificationInfos.toEntity(); + modificationRepository.saveModifications(TEST_GROUP_ID, List.of(entity)); + return entity.getId(); } protected Network getNetwork() { diff --git a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/AbstractTabularModificationTest.java b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/AbstractTabularModificationTest.java new file mode 100644 index 000000000..9ed3b99bb --- /dev/null +++ b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/AbstractTabularModificationTest.java @@ -0,0 +1,215 @@ +/* + * Copyright (c) 2024, RTE (http://www.rte-france.com) + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +package org.gridsuite.modification.server.modifications.tabularmodifications; + +import org.gridsuite.modification.server.modifications.AbstractNetworkModificationTest; +import org.gridsuite.modification.server.utils.ApiUtils; +import org.gridsuite.modification.server.utils.TestUtils; +import org.junit.Test; + +import java.util.List; +import java.util.UUID; + +import static com.vladmihalcea.sql.SQLStatementCountValidator.assertSelectCount; +import static com.vladmihalcea.sql.SQLStatementCountValidator.reset; + +/** + * @author Joris Mancini + */ +public abstract class AbstractTabularModificationTest extends AbstractNetworkModificationTest { + + @Test + public void testSqlRequestsCountOnGetModification() throws Exception { + UUID tabularWith1ModificationUuid = createTabularModification(1); + reset(); + ApiUtils.getModification(mockMvc, tabularWith1ModificationUuid); // Getting one tabular modification with one sub-modification + assertSelectCount(3); + + UUID tabularWith3ModificationUuid = createTabularModification(3); + reset(); + ApiUtils.getModification(mockMvc, tabularWith3ModificationUuid); // Getting one tabular modification with three sub-modifications + assertSelectCount(3); + } + + @Test + public void testSqlRequestsCountOnGetGroupModifications() throws Exception { + createTabularModification(1); + createTabularModification(3); + + reset(); + ApiUtils.getGroupModifications(mockMvc, getGroupId()); // Getting two tabular modifications with respectively one and three sub-modifications + assertSelectCount(6); + } + + /* + POST /v1/groups SQL requests analysis + + First we select the modifications to copy: + - 1 select on the modification_group (check if it exists) + - 1 select to retrieve the modifications + - 2 selects per tabular modification to get the ids of the sub-modifications and the sub-modifications themselves + - 1 select on the modification_group to check if the new group exists + + Then we insert the new modifications in the new group: + - 1 insert in modification_group to create the new group + - 1 insert in modification for tabular modifications (batchSize: number of tabular modifications) + - 1 insert in tabular_modification (batchSize: number of tabular modifications) + - 1 insert in modification for sub-modifications (batchSize: number of sub-modifications) + - 1 insert in sub-modification table (batchSize: number of sub-modifications) + - (optional) 1 insert in sub-modification relation tables (batchSize: number of sub-modifications) + + Then modifications order is set: + - 1 update in modification for orders (batchSize: number of tabular modifications) + + Then relation between tabular modifications and sub-modifications are set: + - 1 insert in tabular_modification_modifications for the relation (batchSize: number of sub-modifications) + + (optional) Then order of sub-modifications relations are set: + - 1 update in sub-modifications relation for the relation (batchSize: number of sub-modifications) + */ + @Test + public void testSqlRequestsCountOnPostGroups() throws Exception { + createFewTabularModifications(); + + reset(); + ApiUtils.postGroups(mockMvc, getGroupId()); + TestUtils.assertRequestsCount(7, getNumberOfInserts(), getNumberOfUpdates(), 0); + } + + @Test + public void testSqlRequestsCountOnPostGroups2() throws Exception { + createMoreTabularModifications(); + + reset(); + ApiUtils.postGroups(mockMvc, getGroupId()); + TestUtils.assertRequestsCount(11, getNumberOfInserts(), getNumberOfUpdates(), 0); + } + + /* + PUT /v1/groups/{groupUuid}/duplications SQL requests analysis + + First we select the modifications to copy: + - 1 select on the modification_group (check if it exists) + - 1 select to retrieve the modifications + - 2 selects per tabular modification to get the ids of the sub-modifications and the sub-modifications themselves + - 1 select on the modification_group to check if the new group exists + + Then we insert the new modifications in the new group: + - 1 insert in modification_group to create the new group + - 1 insert in modification for tabular modifications (batchSize: number of tabular modifications) + - 1 insert in tabular_modification (batchSize: number of tabular modifications) + - 1 insert in modification for sub-modifications (batchSize: number of sub-modifications) + - 1 insert in sub-modification table (batchSize: number of sub-modifications) + - (optional) 1 insert in sub-modification relation tables (batchSize: number of sub-modifications) + + Then modifications order is set: + - 1 update in modification for orders (batchSize: number of tabular modifications) + + Then relation between tabular modifications and sub-modifications are set: + - 1 insert in tabular_modification_modifications for the relation (batchSize: number of sub-modifications) + + (optional) Then order of sub-modifications relations are set: + - 1 update in sub-modifications relation for the relation (batchSize: number of sub-modifications) + */ + @Test + public void testSqlRequestsCountOnPutGroupsDuplications() throws Exception { + createFewTabularModifications(); + + reset(); + ApiUtils.putGroupsDuplications(mockMvc, getGroupId(), getNetworkId()); + TestUtils.assertRequestsCount(7, getNumberOfInserts(), getNumberOfUpdates(), 0); + } + + @Test + public void testSqlRequestsCountOnPutGroupsDuplications2() throws Exception { + createMoreTabularModifications(); + + reset(); + ApiUtils.putGroupsDuplications(mockMvc, getGroupId(), getNetworkId()); + TestUtils.assertRequestsCount(11, getNumberOfInserts(), getNumberOfUpdates(), 0); + } + + /* + PUT /v1/groups/{groupUuid}?action=COPY SQL requests analysis + + First we select the modifications to copy: + - 1 select to retrieve the modifications + - 2 selects per tabular modification to get the ids of the sub-modifications and the sub-modifications themselves + - 1 select on the modification_group to check if the new group exists + + Then we insert the new modifications in the new group: + - 1 insert in modification_group to create the new group + - 1 insert in modification for tabular modifications (batchSize: number of tabular modifications) + - 1 insert in tabular_modification (batchSize: number of tabular modifications) + - 1 insert in modification for sub-modifications (batchSize: number of sub-modifications) + - 1 insert in sub-modification table (batchSize: number of sub-modifications) + - (optional) 1 insert in sub-modification relation tables (batchSize: number of sub-modifications) + + Then modifications order is set: + - 1 update in modification for orders (batchSize: number of tabular modifications) + + Then relation between tabular modifications and sub-modifications are set: + - 1 insert in tabular_modification_modifications for the relation (batchSize: number of sub-modifications) + + (optional) Then order of sub-modifications relations are set: + - 1 update in sub-modifications relation for the relation (batchSize: number of sub-modifications) + */ + @Test + public void testSqlRequestsCountOnPutGroupsWithCopy() throws Exception { + List ids = createFewTabularModifications(); + + reset(); + ApiUtils.putGroupsWithCopy(mockMvc, ids, getNetworkId()); + TestUtils.assertRequestsCount(6, getNumberOfInserts(), getNumberOfUpdates(), 0); + } + + @Test + public void testSqlRequestsCountOnPutGroupsWithCopy2() throws Exception { + List ids = createMoreTabularModifications(); + + reset(); + ApiUtils.putGroupsWithCopy(mockMvc, ids, getNetworkId()); + TestUtils.assertRequestsCount(10, getNumberOfInserts(), getNumberOfUpdates(), 0); + } + + private List createFewTabularModifications() { + UUID tabularUuid1 = createTabularModification(1); + UUID tabularUuid2 = createTabularModification(3); + + return List.of(tabularUuid1, tabularUuid2); + } + + private List createMoreTabularModifications() { + UUID tabularUuid1 = createTabularModification(1); + UUID tabularUuid2 = createTabularModification(3); + UUID tabularUuid3 = createTabularModification(10); + UUID tabularUuid4 = createTabularModification(30); + + return List.of(tabularUuid1, tabularUuid2, tabularUuid3, tabularUuid4); + } + + // Some sub-modifications are related to other tables, for example FreeProperties, then it requires additional inserts + protected int getAdditionalSubModificationRelatedTables() { + return 0; + } + + // Some sub-modifications are related to other ordered tables, for example FreeProperties, then it requires additional updates + protected int getAdditionalSubModificationOrderedRelatedTables() { + return 0; + } + + protected abstract UUID createTabularModification(int qty); + + private int getNumberOfInserts() { + return 6 + getAdditionalSubModificationRelatedTables(); + } + + private int getNumberOfUpdates() { + return 1 + getAdditionalSubModificationOrderedRelatedTables(); + } +} diff --git a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularBatteryModificationsTest.java b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularBatteryModificationsTest.java index 3c19ef443..b54fc8811 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularBatteryModificationsTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularBatteryModificationsTest.java @@ -16,11 +16,8 @@ import org.gridsuite.modification.server.dto.ModificationInfos; import org.gridsuite.modification.server.dto.OperationType; import org.gridsuite.modification.server.dto.TabularModificationInfos; -import org.gridsuite.modification.server.modifications.AbstractNetworkModificationTest; -import org.gridsuite.modification.server.utils.ApiUtils; import org.gridsuite.modification.server.utils.ModificationCreation; import org.gridsuite.modification.server.utils.NetworkCreation; -import org.junit.Test; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Tag; @@ -29,8 +26,6 @@ import java.util.Map; import java.util.UUID; -import static com.vladmihalcea.sql.SQLStatementCountValidator.assertSelectCount; -import static com.vladmihalcea.sql.SQLStatementCountValidator.reset; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.Assert.assertEquals; @@ -38,7 +33,7 @@ * @author Franck Lecuyer */ @Tag("IntegrationTest") -public class TabularBatteryModificationsTest extends AbstractNetworkModificationTest { +public class TabularBatteryModificationsTest extends AbstractTabularModificationTest { @Override protected Network createNetwork(UUID networkUuid) { return NetworkCreation.create(networkUuid, true); @@ -104,30 +99,8 @@ protected void testUpdateModificationMessage(ModificationInfos modificationInfos Assertions.assertEquals(ModificationType.BATTERY_MODIFICATION.name(), updatedValues.get("tabularModificationType")); } - @Test - public void testSqlRequestsCountOnGetModification() throws Exception { - UUID tabularWith1ModificationUuid = createTabularBatteryModification(1); - reset(); - ApiUtils.getModification(mockMvc, tabularWith1ModificationUuid); // Getting one tabular modification with one sub-modification - assertSelectCount(3); - - UUID tabularWith3ModificationUuid = createTabularBatteryModification(3); - reset(); - ApiUtils.getModification(mockMvc, tabularWith3ModificationUuid); // Getting one tabular modification with three sub-modifications - assertSelectCount(3); - } - - @Test - public void testSqlRequestsCountOnGetGroupModifications() throws Exception { - createTabularBatteryModification(1); - createTabularBatteryModification(3); - - reset(); - ApiUtils.getGroupModifications(mockMvc, getGroupId()); // Getting two tabular modifications with respectively one and three sub-modifications - assertSelectCount(6); - } - - private UUID createTabularBatteryModification(int qty) { + @Override + protected UUID createTabularModification(int qty) { ModificationInfos tabularModification = TabularModificationInfos.builder() .modificationType(ModificationType.BATTERY_MODIFICATION) .modifications(createBatteryModificationList(qty)) @@ -137,7 +110,7 @@ private UUID createTabularBatteryModification(int qty) { private List createBatteryModificationList(int qty) { List modifications = new ArrayList<>(); - for (int i = 0; i <= qty; i++) { + for (int i = 0; i < qty; i++) { modifications.add( BatteryModificationInfos.builder() .equipmentId(UUID.randomUUID().toString()) diff --git a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularGeneratorModificationsTest.java b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularGeneratorModificationsTest.java index 5b3f8f504..3aed0086b 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularGeneratorModificationsTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularGeneratorModificationsTest.java @@ -12,8 +12,6 @@ import lombok.SneakyThrows; import org.gridsuite.modification.server.ModificationType; import org.gridsuite.modification.server.dto.*; -import org.gridsuite.modification.server.modifications.AbstractNetworkModificationTest; -import org.gridsuite.modification.server.utils.ApiUtils; import org.gridsuite.modification.server.utils.ModificationCreation; import org.gridsuite.modification.server.utils.NetworkCreation; import org.junit.Test; @@ -26,8 +24,6 @@ import java.util.Map; import java.util.UUID; -import static com.vladmihalcea.sql.SQLStatementCountValidator.assertSelectCount; -import static com.vladmihalcea.sql.SQLStatementCountValidator.reset; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.Assert.assertEquals; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; @@ -37,7 +33,7 @@ * @author Etienne Homer */ @Tag("IntegrationTest") -public class TabularGeneratorModificationsTest extends AbstractNetworkModificationTest { +public class TabularGeneratorModificationsTest extends AbstractTabularModificationTest { @Override protected Network createNetwork(UUID networkUuid) { return NetworkCreation.create(networkUuid, true); @@ -87,30 +83,8 @@ protected void assertAfterNetworkModificationDeletion() { assertEquals(1000., getNetwork().getGenerator("v6generator").getMaxP(), 0.001); } - @Test - public void testSqlRequestsCountOnGetModification() throws Exception { - UUID tabularWith1ModificationUuid = createTabularGeneratorModification(1); - reset(); - ApiUtils.getModification(mockMvc, tabularWith1ModificationUuid); // Getting one tabular modification with one sub-modification - assertSelectCount(3); - - UUID tabularWith3ModificationUuid = createTabularGeneratorModification(3); - reset(); - ApiUtils.getModification(mockMvc, tabularWith3ModificationUuid); // Getting one tabular modification with three sub-modifications - assertSelectCount(3); - } - - @Test - public void testSqlRequestsCountOnGetGroupModifications() throws Exception { - createTabularGeneratorModification(1); - createTabularGeneratorModification(3); - - reset(); - ApiUtils.getGroupModifications(mockMvc, getGroupId()); // Getting two tabular modifications with respectively one and three sub-modifications - assertSelectCount(6); - } - - private UUID createTabularGeneratorModification(int qty) { + @Override + protected UUID createTabularModification(int qty) { ModificationInfos tabularModification = TabularModificationInfos.builder() .modificationType(ModificationType.GENERATOR_MODIFICATION) .modifications(createGeneratorModificationList(qty)) diff --git a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularLineModificationsTest.java b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularLineModificationsTest.java index 15deb6521..ac4d19283 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularLineModificationsTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularLineModificationsTest.java @@ -12,11 +12,8 @@ import lombok.SneakyThrows; import org.gridsuite.modification.server.ModificationType; import org.gridsuite.modification.server.dto.*; -import org.gridsuite.modification.server.modifications.AbstractNetworkModificationTest; -import org.gridsuite.modification.server.utils.ApiUtils; import org.gridsuite.modification.server.utils.ModificationCreation; import org.gridsuite.modification.server.utils.NetworkCreation; -import org.junit.Test; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Tag; @@ -25,8 +22,6 @@ import java.util.Map; import java.util.UUID; -import static com.vladmihalcea.sql.SQLStatementCountValidator.assertSelectCount; -import static com.vladmihalcea.sql.SQLStatementCountValidator.reset; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.Assert.assertEquals; @@ -34,7 +29,7 @@ * @author Anis Touri */ @Tag("IntegrationTest") -public class TabularLineModificationsTest extends AbstractNetworkModificationTest { +public class TabularLineModificationsTest extends AbstractTabularModificationTest { @Override protected Network createNetwork(UUID networkUuid) { return NetworkCreation.create(networkUuid, true); @@ -104,30 +99,8 @@ protected void testUpdateModificationMessage(ModificationInfos modificationInfos Assertions.assertEquals(ModificationType.LINE_MODIFICATION.name(), updatedValues.get("tabularModificationType")); } - @Test - public void testSqlRequestsCountOnGetModification() throws Exception { - UUID tabularWith1ModificationUuid = createTabularLineModification(1); - reset(); - ApiUtils.getModification(mockMvc, tabularWith1ModificationUuid); // Getting one tabular modification with one sub-modification - assertSelectCount(3); - - UUID tabularWith3ModificationUuid = createTabularLineModification(3); - reset(); - ApiUtils.getModification(mockMvc, tabularWith3ModificationUuid); // Getting one tabular modification with three sub-modifications - assertSelectCount(3); - } - - @Test - public void testSqlRequestsCountOnGetGroupModifications() throws Exception { - createTabularLineModification(1); - createTabularLineModification(3); - - reset(); - ApiUtils.getGroupModifications(mockMvc, getGroupId()); // Getting two tabular modifications with respectively one and three sub-modifications - assertSelectCount(6); - } - - private UUID createTabularLineModification(int qty) { + @Override + protected UUID createTabularModification(int qty) { ModificationInfos tabularModification = TabularModificationInfos.builder() .modificationType(ModificationType.LINE_MODIFICATION) .modifications(createLineModificationList(qty)) diff --git a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularLoadModificationsTest.java b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularLoadModificationsTest.java index 06379e45e..da08ed6ad 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularLoadModificationsTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularLoadModificationsTest.java @@ -12,11 +12,8 @@ import lombok.SneakyThrows; import org.gridsuite.modification.server.ModificationType; import org.gridsuite.modification.server.dto.*; -import org.gridsuite.modification.server.modifications.AbstractNetworkModificationTest; -import org.gridsuite.modification.server.utils.ApiUtils; import org.gridsuite.modification.server.utils.ModificationCreation; import org.gridsuite.modification.server.utils.NetworkCreation; -import org.junit.Test; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Tag; @@ -25,15 +22,13 @@ import java.util.Map; import java.util.UUID; -import static com.vladmihalcea.sql.SQLStatementCountValidator.assertSelectCount; -import static com.vladmihalcea.sql.SQLStatementCountValidator.reset; import static org.junit.Assert.assertEquals; /** * @author Etienne Homer */ @Tag("IntegrationTest") -public class TabularLoadModificationsTest extends AbstractNetworkModificationTest { +public class TabularLoadModificationsTest extends AbstractTabularModificationTest { @Override protected Network createNetwork(UUID networkUuid) { @@ -98,30 +93,8 @@ protected void testUpdateModificationMessage(ModificationInfos modificationInfos Assertions.assertEquals(ModificationType.LOAD_MODIFICATION.name(), updatedValues.get("tabularModificationType")); } - @Test - public void testSqlRequestsCountOnGetModification() throws Exception { - UUID tabularWith1ModificationUuid = createTabularLoadModification(1); - reset(); - ApiUtils.getModification(mockMvc, tabularWith1ModificationUuid); // Getting one tabular modification with one sub-modification - assertSelectCount(3); - - UUID tabularWith3ModificationUuid = createTabularLoadModification(3); - reset(); - ApiUtils.getModification(mockMvc, tabularWith3ModificationUuid); // Getting one tabular modification with three sub-modifications - assertSelectCount(3); - } - - @Test - public void testSqlRequestsCountOnGetGroupModifications() throws Exception { - createTabularLoadModification(1); - createTabularLoadModification(3); - - reset(); - ApiUtils.getGroupModifications(mockMvc, getGroupId()); // Getting two tabular modifications with respectively one and three sub-modifications - assertSelectCount(6); - } - - private UUID createTabularLoadModification(int qty) { + @Override + protected UUID createTabularModification(int qty) { ModificationInfos tabularModification = TabularModificationInfos.builder() .modificationType(ModificationType.LOAD_MODIFICATION) .modifications(createLoadModificationList(qty)) @@ -129,6 +102,16 @@ private UUID createTabularLoadModification(int qty) { return saveModification(tabularModification); } + @Override + protected int getAdditionalSubModificationRelatedTables() { + return 1; + } + + @Override + protected int getAdditionalSubModificationOrderedRelatedTables() { + return 1; + } + private List createLoadModificationList(int qty) { List modifications = new ArrayList<>(); for (int i = 0; i <= qty; i++) { diff --git a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularShuntCompensatorModificationsTest.java b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularShuntCompensatorModificationsTest.java index 8e916c49c..a3ce8e7f5 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularShuntCompensatorModificationsTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularShuntCompensatorModificationsTest.java @@ -22,9 +22,7 @@ import org.gridsuite.modification.server.dto.ShuntCompensatorModificationInfos; import org.gridsuite.modification.server.dto.ShuntCompensatorType; import org.gridsuite.modification.server.dto.TabularModificationInfos; -import org.gridsuite.modification.server.modifications.AbstractNetworkModificationTest; import org.gridsuite.modification.server.modifications.TabularModification; -import org.gridsuite.modification.server.utils.ApiUtils; import org.gridsuite.modification.server.utils.ModificationCreation; import org.gridsuite.modification.server.utils.NetworkCreation; import org.junit.Test; @@ -37,8 +35,6 @@ import java.util.Map; import java.util.UUID; -import static com.vladmihalcea.sql.SQLStatementCountValidator.assertSelectCount; -import static com.vladmihalcea.sql.SQLStatementCountValidator.reset; import static org.junit.Assert.assertEquals; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.argThat; @@ -51,7 +47,7 @@ * @author SARTORI David */ @Tag("IntegrationTest") -public class TabularShuntCompensatorModificationsTest extends AbstractNetworkModificationTest { +public class TabularShuntCompensatorModificationsTest extends AbstractTabularModificationTest { @Mock private Network network; @@ -205,30 +201,8 @@ public void testCheckModificationOK() { verify(reporter, never()).report(any()); } - @Test - public void testSqlRequestsCountOnGetModification() throws Exception { - UUID tabularWith1ModificationUuid = createTabularShuntCompensatorModification(1); - reset(); - ApiUtils.getModification(mockMvc, tabularWith1ModificationUuid); // Getting one tabular modification with one sub-modification - assertSelectCount(3); - - UUID tabularWith3ModificationUuid = createTabularShuntCompensatorModification(3); - reset(); - ApiUtils.getModification(mockMvc, tabularWith3ModificationUuid); // Getting one tabular modification with three sub-modifications - assertSelectCount(3); - } - - @Test - public void testSqlRequestsCountOnGetGroupModifications() throws Exception { - createTabularShuntCompensatorModification(1); - createTabularShuntCompensatorModification(3); - - reset(); - ApiUtils.getGroupModifications(mockMvc, getGroupId()); // Getting two tabular modifications with respectively one and three sub-modifications - assertSelectCount(6); - } - - private UUID createTabularShuntCompensatorModification(int qty) { + @Override + protected UUID createTabularModification(int qty) { ModificationInfos tabularModification = TabularModificationInfos.builder() .modificationType(ModificationType.SHUNT_COMPENSATOR_MODIFICATION) .modifications(createShuntCompensatorModificationList(qty)) diff --git a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularSubstationModificationsTest.java b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularSubstationModificationsTest.java index 1e273d5a4..eacd9ced1 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularSubstationModificationsTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularSubstationModificationsTest.java @@ -13,11 +13,8 @@ import lombok.SneakyThrows; import org.gridsuite.modification.server.ModificationType; import org.gridsuite.modification.server.dto.*; -import org.gridsuite.modification.server.modifications.AbstractNetworkModificationTest; -import org.gridsuite.modification.server.utils.ApiUtils; import org.gridsuite.modification.server.utils.ModificationCreation; import org.gridsuite.modification.server.utils.NetworkCreation; -import org.junit.Test; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Tag; @@ -26,15 +23,13 @@ import java.util.Map; import java.util.UUID; -import static com.vladmihalcea.sql.SQLStatementCountValidator.assertSelectCount; -import static com.vladmihalcea.sql.SQLStatementCountValidator.reset; import static org.junit.Assert.assertEquals; /** * @author AJELLAL Ali */ @Tag("IntegrationTest") -public class TabularSubstationModificationsTest extends AbstractNetworkModificationTest { +public class TabularSubstationModificationsTest extends AbstractTabularModificationTest { public static final ModificationType MOFIFICATION_TYPE = ModificationType.SUBSTATION_MODIFICATION; @Override @@ -101,30 +96,8 @@ protected void testUpdateModificationMessage(ModificationInfos modificationInfos Assertions.assertEquals(MOFIFICATION_TYPE.name(), updatedValues.get("tabularModificationType")); } - @Test - public void testSqlRequestsCountOnGetModification() throws Exception { - UUID tabularWith1ModificationUuid = createTabularSubstationModification(1); - reset(); - ApiUtils.getModification(mockMvc, tabularWith1ModificationUuid); // Getting one tabular modification with one sub-modification - assertSelectCount(3); - - UUID tabularWith3ModificationUuid = createTabularSubstationModification(3); - reset(); - ApiUtils.getModification(mockMvc, tabularWith3ModificationUuid); // Getting one tabular modification with three sub-modifications - assertSelectCount(3); - } - - @Test - public void testSqlRequestsCountOnGetGroupModifications() throws Exception { - createTabularSubstationModification(1); - createTabularSubstationModification(3); - - reset(); - ApiUtils.getGroupModifications(mockMvc, getGroupId()); // Getting two tabular modifications with respectively one and three sub-modifications - assertSelectCount(6); - } - - private UUID createTabularSubstationModification(int qty) { + @Override + protected UUID createTabularModification(int qty) { ModificationInfos tabularModification = TabularModificationInfos.builder() .modificationType(ModificationType.SUBSTATION_MODIFICATION) .modifications(createSubstationModificationList(qty)) @@ -132,6 +105,16 @@ private UUID createTabularSubstationModification(int qty) { return saveModification(tabularModification); } + @Override + protected int getAdditionalSubModificationRelatedTables() { + return 1; + } + + @Override + protected int getAdditionalSubModificationOrderedRelatedTables() { + return 1; + } + private List createSubstationModificationList(int qty) { List modifications = new ArrayList<>(); for (int i = 0; i <= qty; i++) { diff --git a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularTwoWindingsTransformerModificationsTest.java b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularTwoWindingsTransformerModificationsTest.java index 27de21847..8e7a35782 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularTwoWindingsTransformerModificationsTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularTwoWindingsTransformerModificationsTest.java @@ -13,11 +13,8 @@ import lombok.SneakyThrows; import org.gridsuite.modification.server.ModificationType; import org.gridsuite.modification.server.dto.*; -import org.gridsuite.modification.server.modifications.AbstractNetworkModificationTest; -import org.gridsuite.modification.server.utils.ApiUtils; import org.gridsuite.modification.server.utils.ModificationCreation; import org.gridsuite.modification.server.utils.NetworkCreation; -import org.junit.Test; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Tag; @@ -26,8 +23,6 @@ import java.util.Map; import java.util.UUID; -import static com.vladmihalcea.sql.SQLStatementCountValidator.assertSelectCount; -import static com.vladmihalcea.sql.SQLStatementCountValidator.reset; import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage; import static org.junit.Assert.assertEquals; @@ -35,7 +30,7 @@ * @author Florent MILLOT */ @Tag("IntegrationTest") -public class TabularTwoWindingsTransformerModificationsTest extends AbstractNetworkModificationTest { +public class TabularTwoWindingsTransformerModificationsTest extends AbstractTabularModificationTest { @Override protected Network createNetwork(UUID networkUuid) { return NetworkCreation.create(networkUuid, true); @@ -103,30 +98,8 @@ protected void testUpdateModificationMessage(ModificationInfos modificationInfos Assertions.assertEquals(ModificationType.TWO_WINDINGS_TRANSFORMER_MODIFICATION.name(), updatedValues.get("tabularModificationType")); } - @Test - public void testSqlRequestsCountOnGetModification() throws Exception { - UUID tabularWith1ModificationUuid = createTabularTwoWindingsTransformerModification(1); - reset(); - ApiUtils.getModification(mockMvc, tabularWith1ModificationUuid); // Getting one tabular modification with one sub-modification - assertSelectCount(3); - - UUID tabularWith3ModificationUuid = createTabularTwoWindingsTransformerModification(3); - reset(); - ApiUtils.getModification(mockMvc, tabularWith3ModificationUuid); // Getting one tabular modification with three sub-modifications - assertSelectCount(3); - } - - @Test - public void testSqlRequestsCountOnGetGroupModifications() throws Exception { - createTabularTwoWindingsTransformerModification(1); - createTabularTwoWindingsTransformerModification(3); - - reset(); - ApiUtils.getGroupModifications(mockMvc, getGroupId()); // Getting two tabular modifications with respectively one and three sub-modifications - assertSelectCount(6); - } - - private UUID createTabularTwoWindingsTransformerModification(int qty) { + @Override + protected UUID createTabularModification(int qty) { ModificationInfos tabularModification = TabularModificationInfos.builder() .modificationType(ModificationType.TWO_WINDINGS_TRANSFORMER_MODIFICATION) .modifications(createTwoWindingsTransformerModificationList(qty)) diff --git a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularVoltageLevelModificationsTest.java b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularVoltageLevelModificationsTest.java index d75b59fa0..8604f69fd 100644 --- a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularVoltageLevelModificationsTest.java +++ b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularVoltageLevelModificationsTest.java @@ -12,11 +12,8 @@ import lombok.SneakyThrows; import org.gridsuite.modification.server.ModificationType; import org.gridsuite.modification.server.dto.*; -import org.gridsuite.modification.server.modifications.AbstractNetworkModificationTest; -import org.gridsuite.modification.server.utils.ApiUtils; import org.gridsuite.modification.server.utils.ModificationCreation; import org.gridsuite.modification.server.utils.NetworkCreation; -import org.junit.Test; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Tag; @@ -25,15 +22,13 @@ import java.util.Map; import java.util.UUID; -import static com.vladmihalcea.sql.SQLStatementCountValidator.assertSelectCount; -import static com.vladmihalcea.sql.SQLStatementCountValidator.reset; import static org.junit.Assert.assertEquals; /** * @author AJELLAL Ali */ @Tag("IntegrationTest") -public class TabularVoltageLevelModificationsTest extends AbstractNetworkModificationTest { +public class TabularVoltageLevelModificationsTest extends AbstractTabularModificationTest { @Override protected Network createNetwork(UUID networkUuid) { return NetworkCreation.create(networkUuid, true); @@ -101,30 +96,8 @@ protected void testUpdateModificationMessage(ModificationInfos modificationInfos Assertions.assertEquals(ModificationType.VOLTAGE_LEVEL_MODIFICATION.name(), updatedValues.get("tabularModificationType")); } - @Test - public void testSqlRequestsCountOnGetModification() throws Exception { - UUID tabularWith1ModificationUuid = createTabularVoltageLevelModification(1); - reset(); - ApiUtils.getModification(mockMvc, tabularWith1ModificationUuid); // Getting one tabular modification with one sub-modification - assertSelectCount(3); - - UUID tabularWith3ModificationUuid = createTabularVoltageLevelModification(3); - reset(); - ApiUtils.getModification(mockMvc, tabularWith3ModificationUuid); // Getting one tabular modification with three sub-modifications - assertSelectCount(3); - } - - @Test - public void testSqlRequestsCountOnGetGroupModifications() throws Exception { - createTabularVoltageLevelModification(1); - createTabularVoltageLevelModification(3); - - reset(); - ApiUtils.getGroupModifications(mockMvc, getGroupId()); // Getting two tabular modifications with respectively one and three sub-modifications - assertSelectCount(6); - } - - private UUID createTabularVoltageLevelModification(int qty) { + @Override + protected UUID createTabularModification(int qty) { ModificationInfos tabularModification = TabularModificationInfos.builder() .modificationType(ModificationType.VOLTAGE_LEVEL_MODIFICATION) .modifications(createVoltageLevelModificationList(qty)) diff --git a/src/test/java/org/gridsuite/modification/server/utils/ApiUtils.java b/src/test/java/org/gridsuite/modification/server/utils/ApiUtils.java index 8821bfcb3..50c06796c 100644 --- a/src/test/java/org/gridsuite/modification/server/utils/ApiUtils.java +++ b/src/test/java/org/gridsuite/modification/server/utils/ApiUtils.java @@ -7,12 +7,14 @@ package org.gridsuite.modification.server.utils; +import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; +import java.util.List; import java.util.UUID; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @@ -36,4 +38,42 @@ public static void getModification(MockMvc mockMvc, UUID modificationUuid) throw .andExpectAll(status().isOk(), content().contentType(MediaType.APPLICATION_JSON)) .andReturn(); } + + public static void postGroups(MockMvc mockMvc, UUID originGroupUuid) throws Exception { + mockMvc.perform( + post("/v1/groups") + .param("groupUuid", UUID.randomUUID().toString()) + .param("duplicateFrom", originGroupUuid.toString()) + ) + .andExpectAll(status().isOk()) + .andReturn(); + } + + public static void putGroupsDuplications(MockMvc mockMvc, UUID originGroupUuid, UUID networkUuid) throws Exception { + mockMvc.perform( + put("/v1/groups/{groupUuid}/duplications", UUID.randomUUID()) + .param("networkUuid", networkUuid.toString()) + .param("reporterId", UUID.randomUUID().toString()) + .param("duplicateFrom", originGroupUuid.toString()) + .param("reportUuid", UUID.randomUUID().toString()) + .param("variantId", UUID.randomUUID().toString()) + ) + .andExpectAll(status().isOk()) + .andReturn(); + } + + public static void putGroupsWithCopy(MockMvc mockMvc, List modificationUuids, UUID networkUuid) throws Exception { + mockMvc.perform( + put("/v1/groups/{groupUuid}", UUID.randomUUID()) + .param("action", "COPY") + .param("networkUuid", networkUuid.toString()) + .param("reporterId", UUID.randomUUID().toString()) + .param("reportUuid", UUID.randomUUID().toString()) + .param("variantId", UUID.randomUUID().toString()) + .contentType("application/json") + .content(new ObjectMapper().writeValueAsString(modificationUuids)) + ) + .andExpectAll(status().isOk()) + .andReturn(); + } }