diff --git a/src/main/java/de/deadlocker8/budgetmaster/Main.java b/src/main/java/de/deadlocker8/budgetmaster/Main.java index c9b0949a9b15dd5f17d5ba1a0ce3b6e0b1b47c51..1ec0c1ab7dbcbdb0c628290727f5771812741353 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 4ed2efc647a422965615c6aa1e608a4725f95211..0938019d80c95fcf03e129c0ea5e3afd7bd312f2 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 0000000000000000000000000000000000000000..74a1d91d69d1ac27d7b2c6ea2ec2282f1cecdd4d --- /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); + } +}