package dbmigrate.executor;
import static org.junit.Assert.*;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import dbmigrate.model.db.Column;
import dbmigrate.model.db.DbConnector;
import dbmigrate.model.db.IColumn;
import dbmigrate.model.operation.AddColumnOperationDescriptor;
import dbmigrate.model.operation.ColumnOperationDescriptor;
import dbmigrate.model.operation.SplitColumnOperationDescriptor;
import dbmigrate.parser.model.SplitColumn;
public class SplitColumnExecutorTest {
SplitColumnExecutor spe;
SplitColumnOperationDescriptor operation;
@Test
public void testSplitColumnExecutor() {
DbConnector db = DbConnector.instance();
Connection connection = null;
try {
connection = db.getConnection("postgresql",
"149.156.205.250:13833", "dbmigrate",
"dbmigrate", "dbmigrate");
} catch(Exception exception) {
fail(exception.getMessage());
}
spe = new SplitColumnExecutor(connection);
assertNotNull(spe);
try {
connection.close();
} catch (SQLException e) {
}
}
@Test
public void testExecuteSplitColumnOperationDescriptor() {
String tableName = "ala";
List<IColumn> columns = new ArrayList<IColumn>();
Column column = new Column();
column.setLength(255);
column.setName("ola");
column.setNullable(false);
columns.add(column);
Column column1 = new Column();
column1.setLength(255);
column1.setName("column1");
column1.setNullable(true);
Column column2 = new Column();
column2.setLength(255);
column2.setName("column2");
column2.setNullable(true);
AddColumnOperationDescriptor newColumnDescriptor1 = new AddColumnOperationDescriptor(tableName, column1);
AddColumnOperationDescriptor newColumnDescriptor2 = new AddColumnOperationDescriptor(tableName, column2);
operation = new SplitColumnOperationDescriptor(column, "ala", ".a.*", newColumnDescriptor1, newColumnDescriptor2);
spe = new SplitColumnExecutor(null);
String sql = spe.createSql(operation);
assertEquals("UPDATE \"ala\" SET column1 = regexp_split_to_array(ola, E'.a.*')[1], column2 = regexp_split_to_array(ola, E'.a.*')[2]"
, sql);
}
@Test
public void testGetConnection() {
try {
DbConnector db = DbConnector.instance();
Connection connection = db.getConnection("postgresql",
"149.156.205.250:13833", "dbmigrate",
"dbmigrate", "dbmigrate");
spe = new SplitColumnExecutor(connection);
assertNotNull(spe.getConnection());
try {
connection.close();
} catch (SQLException e) {
}
} catch(Exception exception) {
fail(exception.getMessage());
}
}
@Test
public void testSetConnection() {
try {
DbConnector db = DbConnector.instance();
Connection connection = db.getConnection("postgresql",
"149.156.205.250:13833", "dbmigrate",
"dbmigrate", "dbmigrate");
spe = new SplitColumnExecutor(connection);
try {
spe.getConnection().close();
} catch (SQLException e1) {
e1.printStackTrace();
}
connection = db.getConnection("postgresql",
"149.156.205.250:13833", "dbmigrate",
"dbmigrate", "dbmigrate");
spe.setConnection(connection);
try {
assertFalse(spe.getConnection().isClosed());
} catch (SQLException e1) {
}
try {
spe.getConnection().close();
} catch (SQLException e) {
}
} catch(Exception exception) {
fail(exception.getMessage());
}
}
}