package test.db; import org.junit.After; import org.junit.Before; import com.firefly.db.JDBCHelper; import com.firefly.utils.io.ClassRelativeResourceLoader; import com.firefly.utils.io.Resource; import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; import static org.hamcrest.Matchers.*; import static org.junit.Assert.*; /** * Abstract base class for integration tests involving database initialization. */ public abstract class AbstractDatabaseInitializationTests { private final ClassRelativeResourceLoader resourceLoader = new ClassRelativeResourceLoader(getClass()); protected JDBCHelper jdbcHelper; @Before public void setUp() { HikariConfig config = new HikariConfig(); config.setJdbcUrl("jdbc:h2:mem:testInit"); config.setDriverClassName("org.h2.Driver"); HikariDataSource ds = new HikariDataSource(config); jdbcHelper = new JDBCHelper(ds); } @After public void shutDown() { } Resource resource(String path) { return resourceLoader.getResource(path); } Resource defaultSchema() { return resource("db-schema.sql"); } Resource usersSchema() { return resource("users-schema.sql"); } void assertUsersDatabaseCreated(String... lastNames) { for (String lastName : lastNames) { Long count = jdbcHelper.queryForSingleColumn("select count(0) from users where last_name = ?", lastName); assertThat("Did not find user with last name [" + lastName + "].", count, equalTo(1L)); } } }