package be.simplenotes.persistence import io.micronaut.context.ApplicationContext import io.micronaut.context.BeanContext import org.flywaydb.core.Flyway import org.junit.jupiter.api.AfterAll import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.parallel.ResourceLock import javax.sql.DataSource @ResourceLock("h2") abstract class DbTest { val beanContext = ApplicationContext.builder().deduceEnvironment(false).environments("test").start() inline fun BeanContext.getBean(): T = getBean(T::class.java) @BeforeEach fun beforeEach() { val migration = beanContext.getBean() val dataSource = beanContext.getBean() Flyway.configure() .dataSource(dataSource) .loggers("slf4j") .cleanDisabled(false) .load() .clean() migration.migrate() } @AfterAll fun closeCtx() { beanContext.close() } }