package io.oasp.gastronomy.restaurant.general.common;
import org.flywaydb.core.Flyway;
import org.flywaydb.core.api.MigrationVersion;
/**
* This class provides methods for handling the database during testing where resets (and other operations) may be
* necessary.
*
*/
public class DbTestHelper {
private Flyway flyway;
private MigrationVersion migrationVersion;
/**
* The constructor.
*
* @param flyway an instance of type {@link Flyway}.
*/
public DbTestHelper(Flyway flyway) {
super();
this.flyway = flyway;
}
/**
* Drops the whole database.
*/
public void dropDatabase() {
this.flyway.clean();
}
/**
* Calls {@link #dropDatabase()} internally, and migrates to the highest available migration (default) or to the
* {@code migrationVersion} specified by {@link #setMigrationVersion(String)}.
*/
public void resetDatabase() {
dropDatabase();
if (this.migrationVersion != null) {
this.flyway.setTarget(this.migrationVersion);
}
this.flyway.migrate();
}
/**
* This method sets the internal value of the {@code migrationVersion}.
*
* @param migrationVersion new {@code String} value of {@code migrationVersion}. Must not be null
*/
public void setMigrationVersion(String migrationVersion) {
this.migrationVersion = MigrationVersion.fromVersion(migrationVersion);
}
}