package dbfit.api;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
public class DbEnvironmentFactoryTest {
private static final String NE_DB_ENVIRONMENT_NAME = "NonexistentDbEnvironment";
private static final String SOME_ENVIRONMENT_NAME = "SomeDbEnvironment";
private static final String NE_DRIVER_CLASS_NAME = "non.existent.Db.Driver";
private final DbEnvironmentFactory factory = DbEnvironmentFactory.newFactoryInstance();
@Rule
public ExpectedException expectedEx = ExpectedException.none();
@Before
public void prepare() {
factory.unregisterEnv(NE_DB_ENVIRONMENT_NAME);
factory.registerEnv(SOME_ENVIRONMENT_NAME, NE_DRIVER_CLASS_NAME);
}
@Test
public void unsupportedEnvironmentInstantiationShouldRaiseException() throws Exception {
expectedEx.expect(IllegalArgumentException.class);
expectedEx.expectMessage("DB Environment not supported:" + NE_DB_ENVIRONMENT_NAME);
factory.createEnvironmentInstance(NE_DB_ENVIRONMENT_NAME);
}
@Test
public void newDbEnvironmentWithMissingDriverShouldRaiseSelfExplainingException() throws Exception {
expectedEx.expectMessage("Cannot load " + SOME_ENVIRONMENT_NAME
+ " database driver " + NE_DRIVER_CLASS_NAME);
factory.createEnvironmentInstance(SOME_ENVIRONMENT_NAME);
}
}