diff --git a/BudgetMasterServer/pom.xml b/BudgetMasterServer/pom.xml index 982d787d386a12ec1c5dbe3cdb9be28917a80ff6..658ae891c65ae3eaf80e70fc0396bce5136fcf88 100644 --- a/BudgetMasterServer/pom.xml +++ b/BudgetMasterServer/pom.xml @@ -26,19 +26,21 @@ <properties> <jlibs.version>3.2.0</jlibs.version> <versionizer.version>3.0.1</versionizer.version> - <webjars-locator.version>0.42</webjars-locator.version> + <webjars-locator.version>0.45</webjars-locator.version> <jquery.version>3.6.0</jquery.version> <materializecss.version>1.0.0</materializecss.version> - <fontawesome.version>6.0.0</fontawesome.version> + <fontawesome.version>6.1.0</fontawesome.version> <sortablejs.version>1.14.0</sortablejs.version> <mousetrap.version>1.6.5</mousetrap.version> <codemirror.version>5.62.2</codemirror.version> - <selenium.version>4.1.2</selenium.version> - <jgit.version>6.0.0.202111291000-r</jgit.version> + <selenium.version>4.1.3</selenium.version> + <assertj-core.version>3.22.0</assertj-core.version> + <jgit.version>6.1.0.202203080745-r</jgit.version> <natorder.version>1.1.2</natorder.version> - <itextpdf.version>5.5.13.2</itextpdf.version> + <h2database.version>1.4.199</h2database.version> + <itextpdf.version>5.5.13.3</itextpdf.version> <vanilla-picker.version>2.12.1</vanilla-picker.version> - <jacoco-maven-plugin.version>0.8.7</jacoco-maven-plugin.version> + <jacoco-maven-plugin.version>0.8.8</jacoco-maven-plugin.version> <dependency-check-maven.version>6.5.3</dependency-check-maven.version> <project.outputDirectory>build/${project.version}</project.outputDirectory> diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/importer/AccountImporter.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/database/importer/AccountImporter.java similarity index 100% rename from src/main/java/de/deadlocker8/budgetmaster/database/importer/AccountImporter.java rename to BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/database/importer/AccountImporter.java diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/importer/CategoryImporter.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/database/importer/CategoryImporter.java similarity index 100% rename from src/main/java/de/deadlocker8/budgetmaster/database/importer/CategoryImporter.java rename to BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/database/importer/CategoryImporter.java diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/importer/ChartImporter.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/database/importer/ChartImporter.java similarity index 100% rename from src/main/java/de/deadlocker8/budgetmaster/database/importer/ChartImporter.java rename to BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/database/importer/ChartImporter.java diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/importer/IconImporter.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/database/importer/IconImporter.java similarity index 100% rename from src/main/java/de/deadlocker8/budgetmaster/database/importer/IconImporter.java rename to BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/database/importer/IconImporter.java diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/importer/ImageImporter.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/database/importer/ImageImporter.java similarity index 100% rename from src/main/java/de/deadlocker8/budgetmaster/database/importer/ImageImporter.java rename to BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/database/importer/ImageImporter.java diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/importer/ItemImporter.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/database/importer/ItemImporter.java similarity index 100% rename from src/main/java/de/deadlocker8/budgetmaster/database/importer/ItemImporter.java rename to BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/database/importer/ItemImporter.java diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/importer/TagImporter.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/database/importer/TagImporter.java similarity index 100% rename from src/main/java/de/deadlocker8/budgetmaster/database/importer/TagImporter.java rename to BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/database/importer/TagImporter.java diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/importer/TemplateGroupImporter.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/database/importer/TemplateGroupImporter.java similarity index 100% rename from src/main/java/de/deadlocker8/budgetmaster/database/importer/TemplateGroupImporter.java rename to BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/database/importer/TemplateGroupImporter.java diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/importer/TemplateImporter.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/database/importer/TemplateImporter.java similarity index 100% rename from src/main/java/de/deadlocker8/budgetmaster/database/importer/TemplateImporter.java rename to BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/database/importer/TemplateImporter.java diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/importer/TransactionImporter.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/database/importer/TransactionImporter.java similarity index 100% rename from src/main/java/de/deadlocker8/budgetmaster/database/importer/TransactionImporter.java rename to BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/database/importer/TransactionImporter.java diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/ImportServiceTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/ImportServiceTest.java index f6802ec3993518b8c1caf6c49a38ea39da8f5461..b32b09ce91128268bf789de87954063b745fef24 100644 --- a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/ImportServiceTest.java +++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/ImportServiceTest.java @@ -35,6 +35,7 @@ import de.deadlocker8.budgetmaster.transactions.Transaction; import de.deadlocker8.budgetmaster.transactions.TransactionRepository; import de.deadlocker8.budgetmaster.utils.Strings; import de.thecodelabs.utils.util.Localization; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mockito; import org.springframework.beans.factory.annotation.Autowired; @@ -42,14 +43,21 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.SpyBean; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; import org.springframework.transaction.annotation.Transactional; +import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; +import javax.persistence.EntityManager; import java.io.IOException; import java.net.URISyntaxException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.text.MessageFormat; import java.time.LocalDate; import java.util.ArrayList; import java.util.List; @@ -59,9 +67,38 @@ import static org.assertj.core.api.Assertions.assertThat; @SpringBootTest(classes = Main.class) @ActiveProfiles("test") @Transactional +@Testcontainers @DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD) class ImportServiceTest { + @Container + static PostgreSQLContainer<?> postgresDB = new PostgreSQLContainer<>("postgres:14.2") + .withDatabaseName("budgetmaster-tests-db") + .withUsername("budgetmaster") + .withPassword("BudgetMaster"); + + @DynamicPropertySource + static void properties(DynamicPropertyRegistry registry) + { + registry.add("spring.datasource.url", postgresDB::getJdbcUrl); + registry.add("spring.datasource.username", postgresDB::getUsername); + registry.add("spring.datasource.password", postgresDB::getPassword); + } + + @BeforeEach + void beforeEach() + { + final List<String> tableNames = List.of("template"); + for(String tableName : tableNames) + { + entityManager.createNativeQuery(MessageFormat.format("ALTER SEQUENCE {0}_id_seq RESTART WITH 1", tableName)) + .executeUpdate(); + } + } + + @Autowired + private EntityManager entityManager; + @Autowired private CategoryRepository categoryRepository; @@ -466,8 +503,6 @@ class ImportServiceTest defaultGroup.setName(Localization.getString(Strings.TEMPLATE_GROUP_DEFAULT)); defaultGroup.setType(TemplateGroupType.DEFAULT); - Mockito.verify(templateGroupRepository, Mockito.times(1)).save(defaultGroup); - Template expectedTemplate = new Template(); expectedTemplate.setID(1); expectedTemplate.setTemplateName("myTemplate"); diff --git a/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/AccountImporterTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/AccountImporterTest.java similarity index 93% rename from src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/AccountImporterTest.java rename to BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/AccountImporterTest.java index 10c6ec4a433b28e32baef8660983ad94a30ca85b..6a6247c2e86648e315f7807001465a25336f8798 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/AccountImporterTest.java +++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/AccountImporterTest.java @@ -11,21 +11,20 @@ import de.deadlocker8.budgetmaster.icon.IconRepository; import de.deadlocker8.budgetmaster.services.EntityType; import de.deadlocker8.budgetmaster.services.ImportResultItem; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.junit.jupiter.SpringExtension; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; -@ExtendWith(SpringExtension.class) -@DataJpaTest -@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD) -class AccountImporterTest +class AccountImporterTest extends ImporterTestBase { + @Override + List<String> getTableNamesToResetSequence() + { + return List.of("account"); + } + @Autowired private IconRepository iconRepository; diff --git a/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/CategoryImporterTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/CategoryImporterTest.java similarity index 89% rename from src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/CategoryImporterTest.java rename to BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/CategoryImporterTest.java index de51e3ed32a6ce5bc71c5f1f24ef12c45623e167..27ee178ae071f5e3b1987573810ca05a7224a1f1 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/CategoryImporterTest.java +++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/CategoryImporterTest.java @@ -9,21 +9,20 @@ import de.deadlocker8.budgetmaster.icon.IconRepository; import de.deadlocker8.budgetmaster.services.EntityType; import de.deadlocker8.budgetmaster.services.ImportResultItem; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.junit.jupiter.SpringExtension; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; -@ExtendWith(SpringExtension.class) -@DataJpaTest -@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD) -class CategoryImporterTest +class CategoryImporterTest extends ImporterTestBase { + @Override + List<String> getTableNamesToResetSequence() + { + return List.of("category"); + } + @Autowired private CategoryRepository categoryRepository; @@ -83,7 +82,7 @@ class CategoryImporterTest @Test void test_importCategories_skipExisting_custom() { - final Category categoryExisting= new Category("Category1", "#ff0000", CategoryType.CUSTOM); + final Category categoryExisting = new Category("Category1", "#ff0000", CategoryType.CUSTOM); categoryExisting.setID(3); final Category categoryToImport = new Category("Category1", "#ff0000", CategoryType.CUSTOM); diff --git a/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/ChartImporterTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/ChartImporterTest.java similarity index 80% rename from src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/ChartImporterTest.java rename to BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/ChartImporterTest.java index c2d5eb9b73dd9ee7834b0bba88798a5ac65e25f4..a53ffe578f941d33c5efad575159db829005e2b9 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/ChartImporterTest.java +++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/ChartImporterTest.java @@ -1,36 +1,50 @@ package de.deadlocker8.budgetmaster.unit.database.importer; import de.deadlocker8.budgetmaster.Main; -import de.deadlocker8.budgetmaster.categories.Category; -import de.deadlocker8.budgetmaster.categories.CategoryType; import de.deadlocker8.budgetmaster.charts.Chart; import de.deadlocker8.budgetmaster.charts.ChartService; import de.deadlocker8.budgetmaster.charts.ChartType; -import de.deadlocker8.budgetmaster.database.importer.CategoryImporter; import de.deadlocker8.budgetmaster.database.importer.ChartImporter; -import de.deadlocker8.budgetmaster.database.importer.ImageImporter; -import de.deadlocker8.budgetmaster.images.Image; -import de.deadlocker8.budgetmaster.images.ImageFileExtension; -import de.deadlocker8.budgetmaster.images.ImageRepository; import de.deadlocker8.budgetmaster.services.EntityType; import de.deadlocker8.budgetmaster.services.ImportResultItem; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.junit.jupiter.SpringExtension; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.springframework.transaction.annotation.Transactional; +import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; @SpringBootTest(classes = Main.class) +@ActiveProfiles("test") +@Transactional +@Testcontainers @DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD) class ChartImporterTest { + @Container + static PostgreSQLContainer<?> postgresDB = new PostgreSQLContainer<>("postgres:14.2") + .withDatabaseName("budgetmaster-tests-db") + .withUsername("budgetmaster") + .withPassword("BudgetMaster"); + + @DynamicPropertySource + static void properties(DynamicPropertyRegistry registry) + { + registry.add("spring.datasource.url", postgresDB::getJdbcUrl); + registry.add("spring.datasource.username", postgresDB::getUsername); + registry.add("spring.datasource.password", postgresDB::getPassword); + } + @Autowired private ChartService chartService; diff --git a/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/IconImporterTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/IconImporterTest.java similarity index 83% rename from src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/IconImporterTest.java rename to BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/IconImporterTest.java index 3b30ace7ee777b9e514baf74e9f5f30d49204aae..d1a9b4d164bb49863e168e649ceefa9b37665c63 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/IconImporterTest.java +++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/IconImporterTest.java @@ -9,21 +9,20 @@ import de.deadlocker8.budgetmaster.images.ImageRepository; import de.deadlocker8.budgetmaster.services.EntityType; import de.deadlocker8.budgetmaster.services.ImportResultItem; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.junit.jupiter.SpringExtension; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; -@ExtendWith(SpringExtension.class) -@DataJpaTest -@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD) -class IconImporterTest +class IconImporterTest extends ImporterTestBase { + @Override + List<String> getTableNamesToResetSequence() + { + return List.of("icon"); + } + @Autowired private ImageRepository imageRepository; diff --git a/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/ImageImporterTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/ImageImporterTest.java similarity index 82% rename from src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/ImageImporterTest.java rename to BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/ImageImporterTest.java index 9b4254ba730cde17883d23ef44cb2b3d9d5f25ad..ffd17a3bbce321379cc1600027aaee722ef4c70f 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/ImageImporterTest.java +++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/ImageImporterTest.java @@ -7,21 +7,20 @@ import de.deadlocker8.budgetmaster.images.ImageRepository; import de.deadlocker8.budgetmaster.services.EntityType; import de.deadlocker8.budgetmaster.services.ImportResultItem; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.junit.jupiter.SpringExtension; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; -@ExtendWith(SpringExtension.class) -@DataJpaTest -@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD) -class ImageImporterTest +class ImageImporterTest extends ImporterTestBase { + @Override + List<String> getTableNamesToResetSequence() + { + return List.of("image"); + } + @Autowired private ImageRepository imageRepository; diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/ImporterTestBase.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/ImporterTestBase.java new file mode 100644 index 0000000000000000000000000000000000000000..8413d4bddd1e7b78a76696f8831e7f648dbf1e08 --- /dev/null +++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/ImporterTestBase.java @@ -0,0 +1,55 @@ +package de.deadlocker8.budgetmaster.unit.database.importer; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; + +import javax.persistence.EntityManager; +import java.text.MessageFormat; +import java.util.List; + +@ExtendWith(SpringExtension.class) +@DataJpaTest +@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) +@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD) +@Testcontainers +abstract class ImporterTestBase +{ + @Container + static PostgreSQLContainer<?> postgresDB = new PostgreSQLContainer<>("postgres:14.2") + .withDatabaseName("budgetmaster-tests-db") + .withUsername("budgetmaster") + .withPassword("BudgetMaster"); + + @DynamicPropertySource + static void properties(DynamicPropertyRegistry registry) + { + registry.add("spring.datasource.url", postgresDB::getJdbcUrl); + registry.add("spring.datasource.username", postgresDB::getUsername); + registry.add("spring.datasource.password", postgresDB::getPassword); + } + + @BeforeEach + void beforeEach() + { + for(String tableName : getTableNamesToResetSequence()) + { + entityManager.createNativeQuery(MessageFormat.format("ALTER SEQUENCE {0}_id_seq RESTART WITH 1", tableName)) + .executeUpdate(); + } + } + + abstract List<String> getTableNamesToResetSequence(); + + @Autowired + private EntityManager entityManager; +} \ No newline at end of file diff --git a/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/TemplateGroupImporterTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/TemplateGroupImporterTest.java similarity index 85% rename from src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/TemplateGroupImporterTest.java rename to BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/TemplateGroupImporterTest.java index b9332d26fcb17d59cfc535254338030d6dcf8c36..63a0ec9aa61c3cb8df396480e2ad1fab9b1813de 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/TemplateGroupImporterTest.java +++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/TemplateGroupImporterTest.java @@ -6,22 +6,22 @@ import de.deadlocker8.budgetmaster.services.ImportResultItem; import de.deadlocker8.budgetmaster.templategroup.TemplateGroup; import de.deadlocker8.budgetmaster.templategroup.TemplateGroupRepository; import de.deadlocker8.budgetmaster.templategroup.TemplateGroupType; +import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.junit.jupiter.SpringExtension; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; -@ExtendWith(SpringExtension.class) -@DataJpaTest -@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD) -class TemplateGroupImporterTest +class TemplateGroupImporterTest extends ImporterTestBase { + @Override + List<String> getTableNamesToResetSequence() + { + return List.of("template_group"); + } + @Autowired private TemplateGroupRepository templateGroupRepository; @@ -38,7 +38,7 @@ class TemplateGroupImporterTest assertThat(resultItem).isEqualTo(expected); final List<TemplateGroup> templateGroups = templateGroupRepository.findAll(); - assertThat(templateGroups) + Assertions.assertThat(templateGroups) .hasSize(1) .containsExactly(defaultTemplateGroup); } @@ -56,7 +56,7 @@ class TemplateGroupImporterTest assertThat(resultItem).isEqualTo(expected); final List<TemplateGroup> templateGroups = templateGroupRepository.findAll(); - assertThat(templateGroups) + Assertions.assertThat(templateGroups) .hasSize(1) .containsExactly(templateGroup); } @@ -75,7 +75,7 @@ class TemplateGroupImporterTest final TemplateGroup expectedTemplateGroup = new TemplateGroup(1, "My group", TemplateGroupType.CUSTOM); final List<TemplateGroup> templateGroups = templateGroupRepository.findAll(); - assertThat(templateGroups) + Assertions.assertThat(templateGroups) .hasSize(1) .containsExactly(expectedTemplateGroup); } diff --git a/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/TemplateImporterTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/TemplateImporterTest.java similarity index 94% rename from src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/TemplateImporterTest.java rename to BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/TemplateImporterTest.java index 2217f5b394022abd8856f68d96f5e98bb211939f..b26a60e35aa51842c3fa8ff67125a720ff142f45 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/TemplateImporterTest.java +++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/TemplateImporterTest.java @@ -19,22 +19,22 @@ import de.deadlocker8.budgetmaster.templategroup.TemplateGroupRepository; import de.deadlocker8.budgetmaster.templategroup.TemplateGroupType; import de.deadlocker8.budgetmaster.templates.Template; import de.deadlocker8.budgetmaster.templates.TemplateRepository; +import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.junit.jupiter.SpringExtension; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; -@ExtendWith(SpringExtension.class) -@DataJpaTest -@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD) -class TemplateImporterTest +class TemplateImporterTest extends ImporterTestBase { + @Override + List<String> getTableNamesToResetSequence() + { + return List.of("template", "account", "category", "tag", "icon", "template_group"); + } + @Autowired private AccountRepository accountRepository; @@ -92,7 +92,7 @@ class TemplateImporterTest assertThat(resultItem).isEqualTo(expected); final List<Template> templates = templateRepository.findAll(); - assertThat(templates).hasSize(1); + Assertions.assertThat(templates).hasSize(1); final Template actualTemplate = templates.get(0); assertThat(actualTemplate) .hasFieldOrPropertyWithValue("ID", 1) @@ -150,7 +150,7 @@ class TemplateImporterTest assertThat(resultItem).isEqualTo(expected); final List<Template> templates = templateRepository.findAll(); - assertThat(templates).hasSize(1); + Assertions.assertThat(templates).hasSize(1); final Template actualTemplate = templates.get(0); assertThat(actualTemplate) .hasFieldOrPropertyWithValue("ID", 1) @@ -196,7 +196,7 @@ class TemplateImporterTest template.setTags(List.of()); template.setDescription("Lorem Ipsum"); template.setIconReference(icon); - template.setTags(List.of( new Tag("0815"), new Tag("Apple Pie"))); + template.setTags(List.of(new Tag("0815"), new Tag("Apple Pie"))); final Template template2 = new Template(); template2.setID(16); @@ -205,7 +205,7 @@ class TemplateImporterTest template2.setTags(List.of()); template2.setDescription("Lorem Ipsum"); template2.setIconReference(icon); - template2.setTags(List.of( new Tag("0815"))); + template2.setTags(List.of(new Tag("0815"))); TemplateGroup defaultTemplateGroup = new TemplateGroup("Default group", TemplateGroupType.DEFAULT); defaultTemplateGroup = templateGroupRepository.save(defaultTemplateGroup); @@ -218,7 +218,7 @@ class TemplateImporterTest assertThat(resultItem).isEqualTo(expected); final List<Template> templates = templateRepository.findAll(); - assertThat(templates).hasSize(2); + Assertions.assertThat(templates).hasSize(2); final Template actualTemplate = templates.get(0); assertThat(actualTemplate) .hasFieldOrPropertyWithValue("ID", 1) @@ -268,7 +268,7 @@ class TemplateImporterTest assertThat(resultItem).isEqualTo(expected); final List<Template> templates = templateRepository.findAll(); - assertThat(templates).hasSize(1); + Assertions.assertThat(templates).hasSize(1); final Template actualTemplate = templates.get(0); assertThat(actualTemplate) .hasFieldOrPropertyWithValue("ID", 1) @@ -301,7 +301,7 @@ class TemplateImporterTest assertThat(resultItem).isEqualTo(expected); final List<Template> templates = templateRepository.findAll(); - assertThat(templates).hasSize(1); + Assertions.assertThat(templates).hasSize(1); final Template actualTemplate = templates.get(0); assertThat(actualTemplate) .hasFieldOrPropertyWithValue("ID", 1) diff --git a/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/TransactionImporterTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/TransactionImporterTest.java similarity index 90% rename from src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/TransactionImporterTest.java rename to BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/TransactionImporterTest.java index 959cf44fb75995f5e5639aa7fc3c9d8c909ab5af..22d63f916dfb2207ce2d41e3687a5f868309b3b6 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/TransactionImporterTest.java +++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/TransactionImporterTest.java @@ -6,14 +6,8 @@ import de.deadlocker8.budgetmaster.accounts.AccountType; import de.deadlocker8.budgetmaster.categories.Category; import de.deadlocker8.budgetmaster.categories.CategoryRepository; import de.deadlocker8.budgetmaster.categories.CategoryType; -import de.deadlocker8.budgetmaster.database.importer.IconImporter; import de.deadlocker8.budgetmaster.database.importer.TagImporter; import de.deadlocker8.budgetmaster.database.importer.TransactionImporter; -import de.deadlocker8.budgetmaster.icon.Icon; -import de.deadlocker8.budgetmaster.icon.IconRepository; -import de.deadlocker8.budgetmaster.images.Image; -import de.deadlocker8.budgetmaster.images.ImageFileExtension; -import de.deadlocker8.budgetmaster.images.ImageRepository; import de.deadlocker8.budgetmaster.repeating.RepeatingOption; import de.deadlocker8.budgetmaster.repeating.endoption.RepeatingEndAfterXTimes; import de.deadlocker8.budgetmaster.repeating.modifier.RepeatingModifierDays; @@ -23,24 +17,23 @@ import de.deadlocker8.budgetmaster.tags.Tag; import de.deadlocker8.budgetmaster.tags.TagRepository; import de.deadlocker8.budgetmaster.transactions.Transaction; import de.deadlocker8.budgetmaster.transactions.TransactionRepository; +import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.junit.jupiter.SpringExtension; import java.time.LocalDate; import java.util.List; -import static org.assertj.core.api.Assertions.as; import static org.assertj.core.api.Assertions.assertThat; -@ExtendWith(SpringExtension.class) -@DataJpaTest -@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD) -class TransactionImporterTest +class TransactionImporterTest extends ImporterTestBase { + @Override + List<String> getTableNamesToResetSequence() + { + return List.of("transaction", "account", "category", "tag"); + } + @Autowired private AccountRepository accountRepository; @@ -81,7 +74,7 @@ class TransactionImporterTest assertThat(resultItem).isEqualTo(expected); final List<Transaction> transactions = transactionRepository.findAll(); - assertThat(transactions).hasSize(1); + Assertions.assertThat(transactions).hasSize(1); final Transaction actualTransaction = transactions.get(0); assertThat(actualTransaction) .hasFieldOrPropertyWithValue("ID", 1) @@ -91,7 +84,7 @@ class TransactionImporterTest .hasFieldOrPropertyWithValue("category", category) .hasFieldOrPropertyWithValue("account", account) .hasFieldOrPropertyWithValue("date", LocalDate.of(2022, 3, 30)) - .hasFieldOrPropertyWithValue("description","Lorem Ipsum") + .hasFieldOrPropertyWithValue("description", "Lorem Ipsum") .hasFieldOrPropertyWithValue("repeatingOption", null) .hasFieldOrPropertyWithValue("transferAccount", null); assertThat(actualTransaction.getTags()).isEmpty(); @@ -129,7 +122,7 @@ class TransactionImporterTest assertThat(resultItem).isEqualTo(expected); final List<Transaction> transactions = transactionRepository.findAll(); - assertThat(transactions).hasSize(1); + Assertions.assertThat(transactions).hasSize(1); final Transaction actualTransaction = transactions.get(0); assertThat(actualTransaction) .hasFieldOrPropertyWithValue("ID", 1) @@ -139,7 +132,7 @@ class TransactionImporterTest .hasFieldOrPropertyWithValue("category", category) .hasFieldOrPropertyWithValue("account", account) .hasFieldOrPropertyWithValue("date", LocalDate.of(2022, 3, 30)) - .hasFieldOrPropertyWithValue("description","Lorem Ipsum") + .hasFieldOrPropertyWithValue("description", "Lorem Ipsum") .hasFieldOrPropertyWithValue("repeatingOption", null) .hasFieldOrPropertyWithValue("transferAccount", transferAccount); assertThat(actualTransaction.getTags()).isEmpty(); @@ -177,7 +170,7 @@ class TransactionImporterTest assertThat(resultItem).isEqualTo(expected); final List<Transaction> transactions = transactionRepository.findAll(); - assertThat(transactions).hasSize(1); + Assertions.assertThat(transactions).hasSize(1); final Transaction actualTransaction = transactions.get(0); assertThat(actualTransaction) .hasFieldOrPropertyWithValue("ID", 1) @@ -187,7 +180,7 @@ class TransactionImporterTest .hasFieldOrPropertyWithValue("category", category) .hasFieldOrPropertyWithValue("account", account) .hasFieldOrPropertyWithValue("date", date) - .hasFieldOrPropertyWithValue("description","Lorem Ipsum") + .hasFieldOrPropertyWithValue("description", "Lorem Ipsum") .hasFieldOrPropertyWithValue("repeatingOption", repeatingOption) .hasFieldOrPropertyWithValue("transferAccount", null); assertThat(actualTransaction.getTags()).isEmpty(); @@ -225,7 +218,7 @@ class TransactionImporterTest assertThat(resultItem).isEqualTo(expected); final List<Transaction> transactions = transactionRepository.findAll(); - assertThat(transactions).hasSize(1); + Assertions.assertThat(transactions).hasSize(1); final Transaction actualTransaction = transactions.get(0); assertThat(actualTransaction) .hasFieldOrPropertyWithValue("ID", 1) @@ -235,7 +228,7 @@ class TransactionImporterTest .hasFieldOrPropertyWithValue("category", category) .hasFieldOrPropertyWithValue("account", account) .hasFieldOrPropertyWithValue("date", LocalDate.of(2022, 3, 30)) - .hasFieldOrPropertyWithValue("description","Lorem Ipsum") + .hasFieldOrPropertyWithValue("description", "Lorem Ipsum") .hasFieldOrPropertyWithValue("repeatingOption", null) .hasFieldOrPropertyWithValue("transferAccount", null); @@ -285,7 +278,7 @@ class TransactionImporterTest assertThat(resultItem).isEqualTo(expected); final List<Transaction> transactions = transactionRepository.findAll(); - assertThat(transactions).hasSize(2); + Assertions.assertThat(transactions).hasSize(2); final Transaction actualTransaction = transactions.get(0); assertThat(actualTransaction) .hasFieldOrPropertyWithValue("ID", 1)