package liquibase.ext.spatial.utils;
import static org.testng.Assert.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import liquibase.database.Database;
import liquibase.database.DatabaseConnection;
import liquibase.database.core.H2Database;
import liquibase.database.jvm.JdbcConnection;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
/**
* This class tests {@link GeometryColumnsUtils}.
*/
public class GeometryColumnsUtilsTest {
/**
* Tests {@link GeometryColumnsUtils#geometryColumnsExists(Database)}.
*
* @param database
* the database to test.
* @param expected
* indicates if the table exists.
*/
@Test(dataProvider = "geometryColumnsExistsTestData")
public void testGeometryColumnsExists(Database database, boolean expected) {
boolean result = GeometryColumnsUtils.geometryColumnsExists(database);
assertEquals(result, expected);
}
@DataProvider
public Object[][] geometryColumnsExistsTestData() throws SQLException {
// Create an H2 database instance without geometry_columns table.
final Database noGeometryColumnsDatabase = new H2Database();
noGeometryColumnsDatabase.setConnection(new JdbcConnection(DriverManager
.getConnection("jdbc:h2:mem:target/noGeometryColumns")));
final Database geometryColumnsDatabase = new H2Database();
Connection connection = DriverManager
.getConnection("jdbc:h2:mem:target/geometryColumns");
DatabaseConnection conn = new JdbcConnection(connection);
geometryColumnsDatabase.setConnection(conn);
Statement statement = connection.createStatement();
statement
.execute("CREATE TABLE geometry_columns (f_table_schema VARCHAR(128), "
+ "f_table_name VARCHAR(128), f_geometry_column VARCHAR(128), coord_dimension INT, "
+ "srid INT, type VARCHAR(30))");
statement.close();
return new Object[][] {
new Object[] { noGeometryColumnsDatabase, false },
new Object[] { geometryColumnsDatabase, true } };
}
}