From d528f285460e63e47a1b98ff2fdd9b5b775aabd6 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sun, 19 Jul 2020 20:28:41 +0200 Subject: [PATCH] #531 - added simple integration tests for repeating transactions --- .../de/deadlocker8/budgetmaster/Main.java | 2 - .../utils/DatabaseConfiguration.java | 2 + .../integration/DateRepairTest.java | 79 +++++++++++++++++++ 3 files changed, 81 insertions(+), 2 deletions(-) create mode 100644 src/test/java/de/deadlocker8/budgetmaster/integration/DateRepairTest.java diff --git a/src/main/java/de/deadlocker8/budgetmaster/Main.java b/src/main/java/de/deadlocker8/budgetmaster/Main.java index c9b0949a9..1ec0c1ab7 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/Main.java +++ b/src/main/java/de/deadlocker8/budgetmaster/Main.java @@ -132,8 +132,6 @@ public class Main extends SpringBootServletInitializer implements ApplicationRun LOGGER.info("Mode not supported! Starting in NORMAL Mode"); return baseFolder; } - - } public static void main(String[] args) diff --git a/src/main/java/de/deadlocker8/budgetmaster/utils/DatabaseConfiguration.java b/src/main/java/de/deadlocker8/budgetmaster/utils/DatabaseConfiguration.java index 4ed2efc64..0938019d8 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/utils/DatabaseConfiguration.java +++ b/src/main/java/de/deadlocker8/budgetmaster/utils/DatabaseConfiguration.java @@ -5,11 +5,13 @@ import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; +import org.springframework.context.annotation.Profile; import javax.sql.DataSource; import java.nio.file.Path; @Configuration +@Profile("!test") public class DatabaseConfiguration { @Bean diff --git a/src/test/java/de/deadlocker8/budgetmaster/integration/DateRepairTest.java b/src/test/java/de/deadlocker8/budgetmaster/integration/DateRepairTest.java new file mode 100644 index 000000000..74a1d91d6 --- /dev/null +++ b/src/test/java/de/deadlocker8/budgetmaster/integration/DateRepairTest.java @@ -0,0 +1,79 @@ +package de.deadlocker8.budgetmaster.integration; + +import de.deadlocker8.budgetmaster.Main; +import de.deadlocker8.budgetmaster.tags.Tag; +import de.deadlocker8.budgetmaster.transactions.Transaction; +import de.deadlocker8.budgetmaster.transactions.TransactionRepository; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.jdbc.DataSourceBuilder; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.context.TestConfiguration; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Import; +import org.springframework.context.annotation.Primary; +import org.springframework.core.io.Resource; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.transaction.annotation.Transactional; + +import javax.sql.DataSource; +import java.io.IOException; +import java.util.List; +import java.util.stream.Collectors; + +import static org.assertj.core.api.Assertions.assertThat; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = Main.class) +@Import(DateRepairTest.TestDatabaseConfiguration.class) +@ActiveProfiles("test") +@Transactional +public class DateRepairTest +{ + @TestConfiguration + static class TestDatabaseConfiguration + { + @Value("classpath:repeating_with_tags.mv.db") + private Resource databaseResource; + + @Bean + @Primary + public DataSource dataSource() throws IOException + { + final String folderName = databaseResource.getFile().getAbsolutePath().replace(".mv.db", ""); + String jdbcString = "jdbc:h2:/" + folderName + ";DB_CLOSE_ON_EXIT=TRUE"; + return DataSourceBuilder.create().username("sa").password("").url(jdbcString).driverClassName("org.h2.Driver").build(); + } + } + + @Autowired + private TransactionRepository transactionRepository; + + @Test + public void test_Repeating_WithTags() + { + final List<Transaction> transactions = transactionRepository.findAll(); + assertThat(transactions).hasSize(4); + + assertThat(transactions.stream() + .map(t -> t.getTags().stream() + .map(Tag::getName).toArray(String[]::new)) + .toArray(String[][]::new)) + .containsOnly(new String[]{"0815", "abc"}); + } + + @Test + public void test_Repeating() + { + final List<Transaction> transactions = transactionRepository.findAll(); + assertThat(transactions).hasSize(4); + + assertThat(transactions.stream() + .map(t -> t.getDate().getHourOfDay()) + .collect(Collectors.toList())) + .containsOnly(0); + } +} -- GitLab