package be.simplenotes.persistence import be.simplenotes.config.DataSourceConfig import io.micronaut.context.BeanContext import org.flywaydb.core.Flyway import org.junit.jupiter.api.AfterAll import org.junit.jupiter.api.BeforeAll import org.junit.jupiter.api.BeforeEach import javax.sql.DataSource abstract class DbTest { abstract fun dataSourceConfig(): DataSourceConfig val beanContext = BeanContext .build() inline fun BeanContext.getBean(): T = getBean(T::class.java) @BeforeAll fun setComponent() { beanContext .registerSingleton(dataSourceConfig()) .start() } @BeforeEach fun beforeEach() { val migration = beanContext.getBean() val dataSource = beanContext.getBean() Flyway.configure() .dataSource(dataSource) .load() .clean() migration.migrate() } @AfterAll fun closeCtx() { beanContext.close() } }