package liquibase.change.core;
import liquibase.change.AbstractChangeTest;
import liquibase.database.Database;
import liquibase.database.core.FirebirdDatabase;
import liquibase.database.core.SQLiteDatabase;
import static org.junit.Assert.*;
import org.junit.Test;
/**
* Tests for {@link liquibase.change.core.AddNotNullConstraintChange}
*/
public class AddNotNullConstraintChangeTest extends AbstractChangeTest {
@Override
@Test
public void getRefactoringName() throws Exception {
assertEquals("Add Not-Null Constraint", new AddNotNullConstraintChange().getChangeMetaData().getDescription());
}
@Override
@Test
public void generateStatement() throws Exception {
// new DatabaseTestTemplate().testOnAllDatabases(new DatabaseTest() {
// public void performTest(Database database) throws Exception {
// AddNotNullConstraintChange change = new AddNotNullConstraintChange();
// change.setSchemaName("SCHEMA_NAME");
// change.setTableName("TABLE_NAME");
// change.setColumnName("COL_HERE");
// change.setDefaultNullValue("DEFAULT_VALUE");
// change.setColumnDataType("varchar(200)");
//
// SqlStatement[] sqlStatements = change.generateStatements(new MockDatabase());
// assertEquals(2, sqlStatements.length);
// assertTrue(sqlStatements[0] instanceof UpdateStatement);
// assertTrue(sqlStatements[1] instanceof SetNullableStatement);
//
// assertEquals("SCHEMA_NAME", ((UpdateStatement) sqlStatements[0]).getSchemaName());
// assertEquals("TABLE_NAME", ((UpdateStatement) sqlStatements[0]).getTableName());
// assertEquals("COL_HERE IS NULL", ((UpdateStatement) sqlStatements[0]).getWhereClause());
// assertEquals("DEFAULT_VALUE", ((UpdateStatement) sqlStatements[0]).getNewColumnValues().get("COL_HERE"));
//
// assertEquals("SCHEMA_NAME", ((SetNullableStatement) sqlStatements[1]).getSchemaName());
// assertEquals("TABLE_NAME", ((SetNullableStatement) sqlStatements[1]).getTableName());
// assertEquals("COL_HERE", ((SetNullableStatement) sqlStatements[1]).getColumnName());
// assertEquals("varchar(200)", ((SetNullableStatement) sqlStatements[1]).getColumnDataType());
// assertFalse(((SetNullableStatement) sqlStatements[1]).isNullable());
// }
// });
}
@Override
@Test
public void getConfirmationMessage() throws Exception {
AddNotNullConstraintChange change = new AddNotNullConstraintChange();
change.setTableName("TABLE_NAME");
change.setColumnName("COL_HERE");
assertEquals("Null constraint has been added to TABLE_NAME.COL_HERE", change.getConfirmationMessage());
}
@Override
protected boolean changeIsUnsupported(Database database) {
return database instanceof FirebirdDatabase
|| database instanceof SQLiteDatabase;
}
}