blob: 7b4becc87b6722c947418b949190b637b33d7ef8 [file] [log] [blame]
package com.xtremelabs.robolectric.util;
import java.sql.Connection;
import java.sql.SQLException;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import com.xtremelabs.robolectric.WithTestDefaultsRunner;
import com.xtremelabs.robolectric.util.DatabaseConfig.CannotLoadDatabaseMapDriverException;
import com.xtremelabs.robolectric.util.DatabaseConfig.UsingDatabaseMap;
/**
* the @UsingDatabaseMap integration test
* @author cvanvranken
*
*/
@UsingDatabaseMap(NullDatabaseMap.class)
@RunWith(WithTestDefaultsRunner.class)
public class NullDatabaseMapTest {
@Test
public void CanChangeDatabaseMapUsingAnnotation() {
Assert.assertTrue(DatabaseConfig.getDatabaseMap().getClass().getName()
.equals(NullDatabaseMap.class.getName()));
Assert.assertTrue(DatabaseConfig.getDatabaseMap().getConnectionString() == null);
Assert.assertTrue(DatabaseConfig.getDatabaseMap()
.getSelectLastInsertIdentity() == null);
Assert.assertTrue(DatabaseConfig.getDatabaseMap().getDriverClassName() == "com.xtremelabs.robolectric.util.NullDatabaseMap");
}
@Test
public void MapIsSetButIsNotLoaded() {
Assert.assertTrue(DatabaseConfig.getDatabaseMap().getClass().getName()
.equals(NullDatabaseMap.class.getName()));
// check that the map has been set but not loaded.
Assert.assertFalse(DatabaseConfig.isMapLoaded());
}
@Test
public void MapLoadsButConnectionFails() {
Assert.assertFalse(DatabaseConfig.isMapLoaded());
Connection connection = null;
boolean expectedError = false;
try {
connection = DatabaseConfig.getMemoryConnection();
// we should never reach this,
//since the connection should not actually be made
Assert.assertTrue(false);
} catch (CannotLoadDatabaseMapDriverException e) {
//This error is expected.
expectedError = true;
}
Assert.assertTrue(expectedError);
Assert.assertTrue(connection == null);
// driver should have loaded because the class name was valid,
// even if the memoryConnectionString was invalid
Assert.assertTrue(DatabaseConfig.isMapLoaded());
}
}