diff --git a/pom.xml b/pom.xml index 1ac34c171e325ccea378cf62d835cbfa0314e526..22df26f5a2ece718bdff3027ef0ae9865625b4e6 100644 --- a/pom.xml +++ b/pom.xml @@ -74,6 +74,7 @@ <vanilla-picker.version>2.12.1</vanilla-picker.version> <jacoco-maven-plugin.version>0.8.8</jacoco-maven-plugin.version> <dependency-check-maven.version>6.5.3</dependency-check-maven.version> + <testcontainer.version>1.16.3</testcontainer.version> <app.versionDate>${maven.build.timestamp}</app.versionDate> <maven.build.timestamp.format>dd.MM.yy</maven.build.timestamp.format> @@ -253,6 +254,19 @@ <artifactId>mockito-inline</artifactId> <scope>test</scope> </dependency> + + <dependency> + <groupId>org.testcontainers</groupId> + <artifactId>junit-jupiter</artifactId> + <version>${testcontainer.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.testcontainers</groupId> + <artifactId>postgresql</artifactId> + <version>${testcontainer.version}</version> + <scope>test</scope> + </dependency> </dependencies> <build> diff --git a/src/main/java/de/deadlocker8/budgetmaster/utils/DatabaseConfigurationProperties.java b/src/main/java/de/deadlocker8/budgetmaster/utils/DatabaseConfigurationProperties.java index 987558e5faf26a9d3493529d6512c808229b1f08..5861dea82bb760091aeb88b93f2692754e8a0402 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/utils/DatabaseConfigurationProperties.java +++ b/src/main/java/de/deadlocker8/budgetmaster/utils/DatabaseConfigurationProperties.java @@ -17,7 +17,7 @@ public class DatabaseConfigurationProperties @Min(1) @Max(65536) - private int port; + private Integer port; @NotBlank private String databaseName; @@ -48,12 +48,12 @@ public class DatabaseConfigurationProperties this.hostname = hostname; } - public int getPort() + public Integer getPort() { return port; } - public void setPort(int port) + public void setPort(Integer port) { this.port = port; } diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/EnsureAllIconizableHaveAnIconInstanceTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/EnsureAllIconizableHaveAnIconInstanceTest.java index 2f790b17f151a6cebd900800d3b9e015a441b0c8..9f96e87e51c3bbeaac11776261fec031266edae3 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/EnsureAllIconizableHaveAnIconInstanceTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/EnsureAllIconizableHaveAnIconInstanceTest.java @@ -30,7 +30,6 @@ import static org.assertj.core.api.Assertions.assertThat; @SpringBootTest(classes = Main.class) @Import(EnsureAllIconizableHaveAnIconInstanceTest.TestDatabaseConfiguration.class) @ActiveProfiles("test") -@SeleniumTest @Transactional class EnsureAllIconizableHaveAnIconInstanceTest { diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/helpers/SeleniumTestBase.java b/src/test/java/de/deadlocker8/budgetmaster/integration/helpers/SeleniumTestBase.java index cab15704c65752f1015f8d0da0c6907b6f0a20f5..cea7734e109fddc22f3ad28b7f84c81981b25602 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/helpers/SeleniumTestBase.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/helpers/SeleniumTestBase.java @@ -1,45 +1,63 @@ package de.deadlocker8.budgetmaster.integration.helpers; import de.deadlocker8.budgetmaster.Main; -import org.junit.jupiter.api.*; -import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.jupiter.api.BeforeEach; import org.openqa.selenium.WebDriver; -import org.openqa.selenium.firefox.FirefoxDriver; -import org.openqa.selenium.firefox.FirefoxOptions; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.web.server.LocalServerPort; 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.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; + +@Testcontainers @SpringBootTest(classes = Main.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -@ExtendWith(SeleniumTestWatcher.class) @DirtiesContext @SeleniumTest -@TestInstance(TestInstance.Lifecycle.PER_CLASS) -public class SeleniumTestBase +@ActiveProfiles("test") +public abstract class SeleniumTestBase { + @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection") + @Autowired protected WebDriver driver; @LocalServerPort protected int port; - @Order(1) - @BeforeAll - public void init() - { - FirefoxOptions options = new FirefoxOptions(); - options.setHeadless(false); - options.addPreference("devtools.console.stdout.content", true); - driver = new FirefoxDriver(options); - driver.manage().window().maximize(); - } + private static boolean isDatabaseAlreadyImported = false; + + @Container + static PostgreSQLContainer<?> postgresDB = new PostgreSQLContainer<>("postgres:14.2") + .withDatabaseName("budgetmaster-tests-db") + .withUsername("budgetmaster") + .withPassword("BudgetMaster"); + - @AfterAll - public void afterAll() { - driver.quit(); + @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); } - public WebDriver getDriver() + @BeforeEach + public void beforeEach() { - return driver; + if(isDatabaseAlreadyImported) + { + return; + } + + importDatabaseOnce(); + + isDatabaseAlreadyImported = true; } + + protected abstract void importDatabaseOnce(); } diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/helpers/SeleniumTestExecutionListener.java b/src/test/java/de/deadlocker8/budgetmaster/integration/helpers/SeleniumTestExecutionListener.java index 6e47428c68c70d399dae32deb13181e08c8bcd65..8cac01aade650f5d0d6270712baf1c57ade85f08 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/helpers/SeleniumTestExecutionListener.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/helpers/SeleniumTestExecutionListener.java @@ -1,18 +1,20 @@ package de.deadlocker8.budgetmaster.integration.helpers; -import de.thecodelabs.utils.util.Localization; -import de.thecodelabs.utils.util.SystemUtils; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.firefox.FirefoxDriver; +import org.openqa.selenium.firefox.FirefoxOptions; +import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ConfigurableApplicationContext; import org.springframework.core.Ordered; import org.springframework.test.context.TestContext; import org.springframework.test.context.support.AbstractTestExecutionListener; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; - public class SeleniumTestExecutionListener extends AbstractTestExecutionListener { + private WebDriver driver; + @Override public int getOrder() { @@ -26,19 +28,45 @@ public class SeleniumTestExecutionListener extends AbstractTestExecutionListener { throw new RuntimeException("Test profile not activated. Skipping tests. (Set -DtestProfile=true in your VM arguments)"); } + + if(driver != null) + { + return; + } + + // allow driver to be Autowired + final ApplicationContext context = testContext.getApplicationContext(); + if(context instanceof final ConfigurableApplicationContext configurableApplicationContext) + { + FirefoxOptions options = new FirefoxOptions(); + options.setHeadless(false); + options.addPreference("devtools.console.stdout.content", true); + driver = new FirefoxDriver(options); + driver.manage().window().maximize(); + + ConfigurableListableBeanFactory factory = configurableApplicationContext.getBeanFactory(); + factory.registerResolvableDependency(WebDriver.class, driver); + } } @Override public void afterTestClass(TestContext testContext) { - final Path path = SystemUtils.getApplicationSupportDirectoryPath(Localization.getString("folder"), "test", "budgetmaster.mv.db"); - try + if(driver != null) { - Files.deleteIfExists(path); + driver.quit(); } - catch(IOException e) + } + + @Override + public void afterTestMethod(TestContext testContext) + { + final boolean isSuccess = testContext.getTestException() == null; + if(isSuccess) { - e.printStackTrace(); + return; } + + IntegrationTestHelper.saveScreenshots(driver, testContext.getTestMethod().getName(), testContext.getTestClass().getSimpleName()); } } diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/helpers/SeleniumTestWatcher.java b/src/test/java/de/deadlocker8/budgetmaster/integration/helpers/SeleniumTestWatcher.java deleted file mode 100644 index be160519b52a2e0c1f72a1fbbeca7fef67def736..0000000000000000000000000000000000000000 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/helpers/SeleniumTestWatcher.java +++ /dev/null @@ -1,21 +0,0 @@ -package de.deadlocker8.budgetmaster.integration.helpers; - -import org.junit.jupiter.api.extension.ExtensionContext; -import org.junit.jupiter.api.extension.TestWatcher; -import org.openqa.selenium.WebDriver; - -public class SeleniumTestWatcher implements TestWatcher -{ - @Override - public void testFailed(ExtensionContext context, Throwable cause) - { - final WebDriver driver = getDriver(context); - IntegrationTestHelper.saveScreenshots(driver, context.getRequiredTestMethod().getName(), context.getRequiredTestClass().getSimpleName()); - } - - private WebDriver getDriver(ExtensionContext context) - { - final SeleniumTestBase testInstance = (SeleniumTestBase) context.getRequiredTestInstance(); - return testInstance.getDriver(); - } -} diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/AccountTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/AccountTest.java index 6e157e18097d760851f8b8e5139fd6f740e4f91c..a2046e61caaf31c403db30dd091dae893b473ad8 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/AccountTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/AccountTest.java @@ -8,7 +8,6 @@ import de.deadlocker8.budgetmaster.integration.helpers.IntegrationTestHelper; import de.deadlocker8.budgetmaster.integration.helpers.SeleniumTestBase; import de.deadlocker8.budgetmaster.integration.helpers.TransactionTestHelper; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; @@ -24,12 +23,13 @@ import java.util.stream.Collectors; import static org.assertj.core.api.Assertions.assertThat; + class AccountTest extends SeleniumTestBase { - private IntegrationTestHelper helper; + private static IntegrationTestHelper helper; - @BeforeAll - public void beforeAll() + @Override + protected void importDatabaseOnce() { helper = new IntegrationTestHelper(driver, port); helper.start(); @@ -37,7 +37,7 @@ class AccountTest extends SeleniumTestBase helper.hideBackupReminder(); helper.hideWhatsNewDialog(); - String path = getClass().getClassLoader().getResource("AccountDatabase.json").getFile().replace("/", File.separator); + String path = Account.class.getClassLoader().getResource("AccountDatabase.json").getFile().replace("/", File.separator); final Account account1 = new Account("DefaultAccount0815", AccountType.CUSTOM); final Account account2 = new Account("sfsdf", AccountType.CUSTOM); @@ -79,7 +79,6 @@ class AccountTest extends SeleniumTestBase } } - @Test void test_newAccount_cancel() { diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/CategorySelectTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/CategorySelectTest.java index a9d6698e73fa65084f6506f70884dda093b3d246..f10ceaf05374738e5ea81c953e696597c698fc11 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/CategorySelectTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/CategorySelectTest.java @@ -5,7 +5,6 @@ import de.deadlocker8.budgetmaster.accounts.AccountType; import de.deadlocker8.budgetmaster.authentication.UserService; import de.deadlocker8.budgetmaster.integration.helpers.IntegrationTestHelper; import de.deadlocker8.budgetmaster.integration.helpers.SeleniumTestBase; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.openqa.selenium.By; @@ -23,10 +22,10 @@ import static org.assertj.core.api.Assertions.assertThat; class CategorySelectTest extends SeleniumTestBase { - private IntegrationTestHelper helper; + private static IntegrationTestHelper helper; - @BeforeAll - public void beforeAll() + @Override + protected void importDatabaseOnce() { helper = new IntegrationTestHelper(driver, port); helper.start(); diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ChangeTransactionTypeTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ChangeTransactionTypeTest.java index d7240a35b29f821730bf365ff1b5e11265c71eea..b90cd5e35e7dd1ec5b01c3cf59b3bd335c45a1a6 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ChangeTransactionTypeTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ChangeTransactionTypeTest.java @@ -25,7 +25,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; class ChangeTransactionTypeTest extends SeleniumTestBase { - private IntegrationTestHelper helper; + private static IntegrationTestHelper helper; private void openTransferTypeModal(int transactionID) { @@ -52,8 +52,8 @@ class ChangeTransactionTypeTest extends SeleniumTestBase assertThat(driver.findElement(By.id("modalChangeTransactionType")).isDisplayed()).isTrue(); } - @BeforeAll - public void beforeAll() + @Override + protected void importDatabaseOnce() { helper = new IntegrationTestHelper(driver, port); helper.start(); diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ChartTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ChartTest.java index d6a4adffa48fdb1668d6ae169219241561618cdb..9174c3d423eb22ab84727f8dcd454100ce2686da 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ChartTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ChartTest.java @@ -29,10 +29,10 @@ class ChartTest extends SeleniumTestBase private final String SELECTOR_VISIBLE_CHART_PREVIEWS = ".chart-preview-column:not(.hidden)"; private final String SELECTOR_ACTIVE_CHART_PREVIEWS = ".chart-preview.active"; - private IntegrationTestHelper helper; + private static IntegrationTestHelper helper; - @BeforeAll - public void beforeAll() + @Override + protected void importDatabaseOnce() { helper = new IntegrationTestHelper(driver, port); helper.start(); diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/FirstUseTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/FirstUseTest.java index 9280101949f78594b37fba0687611ad588ff662f..cb7ea85af95638700697294fca4b1d506aa252b8 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/FirstUseTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/FirstUseTest.java @@ -15,10 +15,10 @@ import static org.assertj.core.api.Assertions.assertThat; class FirstUseTest extends SeleniumTestBase { - private IntegrationTestHelper helper; + private static IntegrationTestHelper helper; - @BeforeAll - public void prepare() + @Override + protected void importDatabaseOnce() { helper = new IntegrationTestHelper(driver, port); helper.start(); diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/HotkeyTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/HotkeyTest.java index 14b6770ed29574963b28e51958dfee82573c58b3..48abdb7d198382d7cd9b12f92369ef4027e44567 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/HotkeyTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/HotkeyTest.java @@ -28,10 +28,10 @@ import static org.junit.jupiter.api.Assumptions.assumeTrue; class HotkeyTest extends SeleniumTestBase { - private IntegrationTestHelper helper; + private static IntegrationTestHelper helper; - @BeforeAll - public void prepare() + @Override + protected void importDatabaseOnce() { helper = new IntegrationTestHelper(driver, port); helper.start(); diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ImportTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ImportTest.java deleted file mode 100644 index 13622fe6e84c63be7600e0ac7b95f16d53837fc2..0000000000000000000000000000000000000000 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/ImportTest.java +++ /dev/null @@ -1,40 +0,0 @@ -package de.deadlocker8.budgetmaster.integration.selenium; - -import de.deadlocker8.budgetmaster.accounts.Account; -import de.deadlocker8.budgetmaster.accounts.AccountType; -import de.deadlocker8.budgetmaster.authentication.UserService; -import de.deadlocker8.budgetmaster.integration.helpers.IntegrationTestHelper; -import de.deadlocker8.budgetmaster.integration.helpers.SeleniumTestBase; -import org.junit.jupiter.api.Test; -import org.openqa.selenium.By; -import org.openqa.selenium.WebElement; - -import java.io.File; -import java.util.Arrays; -import java.util.List; - -import static org.assertj.core.api.Assertions.assertThat; - -class ImportTest extends SeleniumTestBase -{ - @Test - void requestImport() - { - IntegrationTestHelper helper = new IntegrationTestHelper(driver, port); - helper.start(); - helper.login(UserService.DEFAULT_PASSWORD); - helper.hideBackupReminder(); - helper.hideWhatsNewDialog(); - - String path = getClass().getClassLoader().getResource("SearchDatabase.json").getFile().replace("/", File.separator); - List<String> sourceAccounts = Arrays.asList("DefaultAccount0815", "sfsdf"); - final Account account1 = new Account("DefaultAccount0815", AccountType.CUSTOM); - final Account account2 = new Account("Account2", AccountType.CUSTOM); - helper.uploadDatabase(path, sourceAccounts, List.of(account1, account2)); - - // assert - driver.get(helper.getUrl() + "/accounts"); - List<WebElement> accountRows = driver.findElements(By.cssSelector(".account-container tr")); - assertThat(accountRows).hasSize(3); - } -} \ No newline at end of file diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/LoginControllerTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/LoginControllerTest.java index b12bd58e540fc670a3cd3c87becff4d253e4beaa..0b3bdfb8af214e9e8a6eeb2d84a64bed70400691 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/LoginControllerTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/LoginControllerTest.java @@ -18,6 +18,13 @@ import static org.assertj.core.api.Assertions.assertThat; class LoginControllerTest extends SeleniumTestBase { + private static IntegrationTestHelper helper; + + @Override + protected void importDatabaseOnce() + { + } + @Test void test_getLoginPage() { diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/MediaTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/MediaTest.java index 67d47041e1854f03ae23eec8ec6c9ddd3597ade9..79f7f8e1069e50c4ef67905b6a35ffcce77e47b8 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/MediaTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/MediaTest.java @@ -23,10 +23,10 @@ import static org.assertj.core.api.Assertions.assertThat; class MediaTest extends SeleniumTestBase { - private IntegrationTestHelper helper; + private static IntegrationTestHelper helper; - @BeforeAll - public void beforeAll() + @Override + protected void importDatabaseOnce() { helper = new IntegrationTestHelper(driver, port); helper.start(); diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionFromExistingOneTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionFromExistingOneTest.java index ccad71306fa01479505856e8e7207762e63e304b..34931249fe36fb7d0a691f79eec1ddbe7cf9b45f 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionFromExistingOneTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionFromExistingOneTest.java @@ -24,10 +24,10 @@ import static org.assertj.core.api.Assertions.assertThat; class NewTransactionFromExistingOneTest extends SeleniumTestBase { - private IntegrationTestHelper helper; + private static IntegrationTestHelper helper; - @BeforeAll - public void beforeAll() + @Override + protected void importDatabaseOnce() { helper = new IntegrationTestHelper(driver, port); helper.start(); diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionFromTemplateTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionFromTemplateTest.java index 21d125159b191ed6945e58732dd7cd9fcf11bbd9..78c9dee872008aaebb49fdc62f2606cff58ad846 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionFromTemplateTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionFromTemplateTest.java @@ -24,10 +24,10 @@ import static org.assertj.core.api.Assertions.assertThat; class NewTransactionFromTemplateTest extends SeleniumTestBase { - private IntegrationTestHelper helper; + private static IntegrationTestHelper helper; - @BeforeAll - public void beforeAll() + @Override + protected void importDatabaseOnce() { helper = new IntegrationTestHelper(driver, port); helper.start(); diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionNormalTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionNormalTest.java index ff6a77a1b4e79611378495c1d811e061c7ed9b99..aac60ef3a8fe131104e96131560fa614a96a7c49 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionNormalTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionNormalTest.java @@ -26,10 +26,10 @@ import static org.assertj.core.api.Assertions.assertThat; class NewTransactionNormalTest extends SeleniumTestBase { - private IntegrationTestHelper helper; + private static IntegrationTestHelper helper; - @BeforeAll - public void beforeAll() + @Override + protected void importDatabaseOnce() { helper = new IntegrationTestHelper(driver, port); helper.start(); diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionRecurringTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionRecurringTest.java index 894dc4cf750d6a6c1a9a6c0c2601bf48c3108913..2a0149ff54a93e0ecfda19e902f936827e690ec9 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionRecurringTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionRecurringTest.java @@ -27,10 +27,10 @@ import static org.assertj.core.api.Assertions.assertThat; class NewTransactionRecurringTest extends SeleniumTestBase { - private IntegrationTestHelper helper; + private static IntegrationTestHelper helper; - @BeforeAll - public void beforeALl() + @Override + protected void importDatabaseOnce() { helper = new IntegrationTestHelper(driver, port); helper.start(); diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionTransferTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionTransferTest.java index b02047e0c8ae6e807536b88b072bb94c45005c83..09de62e76648366140fd45584213a6bfbab6ae7d 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionTransferTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/NewTransactionTransferTest.java @@ -28,10 +28,10 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; class NewTransactionTransferTest extends SeleniumTestBase { - private IntegrationTestHelper helper; + private static IntegrationTestHelper helper; - @BeforeAll - public void prepare() + @Override + protected void importDatabaseOnce() { helper = new IntegrationTestHelper(driver, port); helper.start(); diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/SearchTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/SearchTest.java index 1c9064330c7eed7789520596c8e427c04798d473..bc733b0abb0c7cd70a3679a4dd40fd94cfc36bcc 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/SearchTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/SearchTest.java @@ -21,8 +21,10 @@ import static org.assertj.core.api.Assertions.assertThat; class SearchTest extends SeleniumTestBase { - @BeforeAll - public void prepare() + private static IntegrationTestHelper helper; + + @Override + protected void importDatabaseOnce() { IntegrationTestHelper helper = new IntegrationTestHelper(driver, port); helper.start(); diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/TagTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/TagTest.java index 40f63a8c06fa0477f733c03966cbb11c9a91b528..ea028e26f6ce03da4c233a31e4930c75d951e15a 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/TagTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/TagTest.java @@ -19,10 +19,10 @@ import static org.assertj.core.api.Assertions.assertThat; class TagTest extends SeleniumTestBase { - private IntegrationTestHelper helper; + private static IntegrationTestHelper helper; - @BeforeAll - public void beforeAll() + @Override + protected void importDatabaseOnce() { helper = new IntegrationTestHelper(driver, port); helper.start(); diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/WhatsNewTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/WhatsNewTest.java index 2cd3316de6516727eef72e5722beb161ba0f3ef7..24612969056dd2e0294b89883a87b5b7d71bbd96 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/WhatsNewTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/selenium/WhatsNewTest.java @@ -15,8 +15,10 @@ import static org.assertj.core.api.Assertions.assertThat; class WhatsNewTest extends SeleniumTestBase { - @BeforeAll - public void prepare() + private static IntegrationTestHelper helper; + + @Override + protected void importDatabaseOnce() { IntegrationTestHelper helper = new IntegrationTestHelper(driver, port); helper.start(); diff --git a/src/test/java/de/deadlocker8/budgetmaster/unit/TransactionServiceDatabaseTest.java b/src/test/java/de/deadlocker8/budgetmaster/unit/TransactionServiceDatabaseTest.java index 2338726d6d959a43562a4333830139cd31e0c0aa..4055c139d234353815a1ad9f92e9c6508435db10 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/unit/TransactionServiceDatabaseTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/unit/TransactionServiceDatabaseTest.java @@ -6,8 +6,11 @@ import de.deadlocker8.budgetmaster.accounts.AccountType; import de.deadlocker8.budgetmaster.filter.FilterConfiguration; import de.deadlocker8.budgetmaster.integration.helpers.SeleniumTest; import de.deadlocker8.budgetmaster.transactions.Transaction; +import de.deadlocker8.budgetmaster.transactions.TransactionRepository; import de.deadlocker8.budgetmaster.transactions.TransactionService; import de.deadlocker8.budgetmaster.utils.DateHelper; +import de.thecodelabs.utils.util.SystemUtils; +import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Test; import org.mockito.MockedStatic; import org.mockito.Mockito; @@ -23,8 +26,10 @@ import org.springframework.core.io.Resource; import org.springframework.test.context.ActiveProfiles; import org.springframework.transaction.annotation.Transactional; +import javax.persistence.EntityManager; import javax.sql.DataSource; import java.io.IOException; +import java.nio.file.Path; import java.time.LocalDate; import java.util.List; @@ -33,7 +38,6 @@ import static org.assertj.core.api.Assertions.assertThat; @SpringBootTest(classes = Main.class) @Import(TransactionServiceDatabaseTest.TestDatabaseConfiguration.class) @ActiveProfiles("test") -@SeleniumTest @Transactional class TransactionServiceDatabaseTest { @@ -59,6 +63,9 @@ class TransactionServiceDatabaseTest @Autowired private AccountRepository accountRepository; + @Autowired + DataSource dataSource; + @Test void test_deleteAll() { diff --git a/src/test/resources/repeating_with_tags.mv.db b/src/test/resources/repeating_with_tags.mv.db index a412f66a685ceaf5a5c6990e38798e1ca0c3f139..773368dcd7040eee3822562ee75236b3036ea45b 100644 Binary files a/src/test/resources/repeating_with_tags.mv.db and b/src/test/resources/repeating_with_tags.mv.db differ