package dbmigrate.executor;
import java.sql.Connection;
import java.util.Arrays;
import java.util.Random;
import junit.framework.TestCase;
import org.postgresql.util.PSQLException;
import dbmigrate.model.db.Column;
import dbmigrate.model.db.DbConnector;
import dbmigrate.model.db.IColumn;
import dbmigrate.model.db.ITable;
import dbmigrate.model.db.Table;
import dbmigrate.model.db.TypeEnum;
import dbmigrate.model.operation.AddColumnOperationDescriptor;
import dbmigrate.model.operation.DropColumnOperationDescriptor;
import dbmigrate.model.operation.DropTableOperationDescriptor;
import dbmigrate.model.operation.RenameColumnOperationDescriptor;
public class RenameColumnTest extends TestCase {
private Connection dbcon = null;
private String sampleTable = "sampleTable";
private IColumn oldCol;
private IColumn newCol;
private ITable table;
private String getColName() {
Random rnd = new Random();
int randNum = rnd.nextInt(999999);
String colname = "sampleCol" + randNum;
return colname;
}
@Override
public void setUp() {
try {
dbcon = DbConnector.instance().getConnection("postgresql",
"149.156.205.250:13833", "dbmigrate", "dbmigrate", "dbmigrate");
} catch(Exception exception) {
fail(exception.getMessage());
}
String oldName = getColName();
String newName = oldName + "new";
oldCol = new Column();
oldCol.setName(oldName);
oldCol.setType(TypeEnum.INT);
newCol = new Column();
newCol.setName(newName);
newCol.setType(TypeEnum.INT);
table = new Table();
table.setName(sampleTable);
table.setColumns(Arrays.asList(new IColumn[] { oldCol }));
AddColumnOperationDescriptor aco = new AddColumnOperationDescriptor(
sampleTable, oldCol);
AddColumnExecutor ace = new AddColumnExecutor(dbcon);
System.out.println(ace.createSql(aco));
try {
ace.execute(aco);
} catch (Exception e) {
e.printStackTrace();
fail();
}
}
public void testRenameColumn() {
RenameColumnOperationDescriptor rdesc = new RenameColumnOperationDescriptor(
table, oldCol, newCol);
RenameColumnExecutor rexec = new RenameColumnExecutor(dbcon);
System.out.println(rexec.createSql(rdesc));
try {
rexec.execute(rdesc);
} catch (Exception e) {
e.printStackTrace();
fail();
}
}
public void tearDown() {
DropColumnOperationDescriptor dco = new DropColumnOperationDescriptor(
table, newCol);
DropColumnExecutor dce = new DropColumnExecutor(dbcon);
System.out.println(dce.createSql(dco));
try {
dce.execute(dco);
} catch (Exception e) {
e.printStackTrace();
fail();
}
}
}