package liquibase.change.core; import liquibase.change.AbstractChangeTest; import liquibase.database.Database; import liquibase.database.core.FirebirdDatabase; import liquibase.database.core.SQLiteDatabase; import liquibase.statement.SqlStatement; import static org.junit.Assert.*; public class AddLookupTableChangeTest extends AbstractChangeTest { @Override public void getRefactoringName() throws Exception { assertEquals("Add Lookup Table", new AddLookupTableChange().getChangeMetaData().getDescription()); } @Override public void generateStatement() throws Exception { AddLookupTableChange change = new AddLookupTableChange(); change.setExistingTableName("OLD_TABLE_NAME"); change.setExistingColumnName("OLD_COLUMN_NAME"); change.setExistingTableSchemaName("OLD_SCHEMA"); change.setConstraintName("FK_NAME"); change.setNewColumnDataType("TYPE(255)"); change.setNewTableName("NEW_TABLE"); change.setNewColumnName("NEW_COL"); change.setNewTableSchemaName("NEW_SCHEM"); testChangeOnAll(change, new GenerateAllValidator() { public void validate(SqlStatement[] statements, Database database) { // TODO this test should reorganized // first statement is RawSql to create new (Lookup) Table // second - Set Not Null Constraint for the Field in the created Lookup table // third - primary key constraint of the Lookup Table // forth - add foreign key reference from old (base) table to the lookup table // Take into account that different databases could produce different number of the statements. // assertEquals(4, statements.length); // AddDefaultValueStatement statement = (AddDefaultValueStatement) statements[0]; // assertEquals("TABLE_NAME", statement.getTableName()); // assertEquals("COLUMN_NAME", statement.getColumnName()); // assertTrue(statement.getDefaultValue() instanceof Boolean); // assertEquals(Boolean.TRUE, statement.getDefaultValue()); } }); } @Override public void getConfirmationMessage() throws Exception { AddLookupTableChange change = new AddLookupTableChange(); change.setExistingTableName("OLD_TABLE_NAME"); change.setExistingColumnName("OLD_COLUMN_NAME"); assertEquals("Lookup table added for OLD_TABLE_NAME.OLD_COLUMN_NAME",change.getConfirmationMessage()); } @Override protected boolean changeIsUnsupported(Database database) { return database instanceof FirebirdDatabase || database instanceof SQLiteDatabase; } }