Package liquibase.change.core.supplier

Source Code of liquibase.change.core.supplier.AddLookupTableChangeSupplier

package liquibase.change.core.supplier;

import liquibase.change.Change;
import liquibase.change.ColumnConfig;
import liquibase.change.core.AddLookupTableChange;
import liquibase.change.core.CreateTableChange;
import liquibase.diff.DiffResult;
import liquibase.exception.DatabaseException;
import liquibase.sdk.supplier.change.AbstractChangeSupplier;
import liquibase.structure.core.Column;
import liquibase.structure.core.ForeignKey;
import liquibase.structure.core.Table;

import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertNotNull;

public class AddLookupTableChangeSupplier extends AbstractChangeSupplier<AddLookupTableChange>  {

    public AddLookupTableChangeSupplier() {
        super(AddLookupTableChange.class);
    }

    @Override
    public Change[]  prepareDatabase(AddLookupTableChange change) throws DatabaseException {
        CreateTableChange createTableChange= new CreateTableChange();
        createTableChange.setCatalogName(change.getExistingTableCatalogName());
        createTableChange.setSchemaName(change.getExistingTableSchemaName());
        createTableChange.setTableName(change.getExistingTableName());

        createTableChange.addColumn(new ColumnConfig().setName("other_column").setType("int"));
        createTableChange.addColumn(new ColumnConfig().setName(change.getExistingColumnName()).setType(change.getNewColumnDataType()));

        return new Change[] {createTableChange };
    }

    @Override
    public void checkDiffResult(DiffResult diffResult, AddLookupTableChange change) {
        Table newTable = diffResult.getUnexpectedObject(new Table(change.getNewTableCatalogName(), change.getNewTableSchemaName(), change.getNewTableName()));
        assertNotNull(newTable);
        assertEquals(1, newTable.getColumns().size());
        assertNotNull(newTable.getColumn(change.getNewColumnName()));
//todo        assertEquals(change.getNewColumnDataType(), newTable.getColumn(change.getNewColumnName()).getType().toString());
        assertEquals(change.getNewColumnName().toUpperCase(), newTable.getPrimaryKey().getColumnNames().toUpperCase());

        assertNotNull(diffResult.getUnexpectedObject(new Table(change.getNewTableCatalogName(), change.getNewTableSchemaName(), change.getNewTableName())));
        assertNotNull(new ForeignKey(change.getConstraintName(), change.getExistingTableCatalogName(), change.getExistingTableSchemaName(), change.getExistingTableName(), new Column(change.getExistingColumnName())));

    }
}
TOP

Related Classes of liquibase.change.core.supplier.AddLookupTableChangeSupplier

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.