Search in sources :

Example 1 with MockDatabase

use of liquibase.database.core.MockDatabase in project liquibase by liquibase.

the class MarkChangeSetRanGeneratorTest method generateSqlSecondRunUpdatesLabelsContextsComments.

/**
 * Ensure that upon running an update on a changeset that has been run before, we still update the labels,
 * contexts and comments columns in the DBCL table.
 */
@Test
public void generateSqlSecondRunUpdatesLabelsContextsComments() {
    String changeSetContextExpression = "changeSetContext1 AND changeSetContext2";
    DatabaseChangeLog rootChangeLog = new DatabaseChangeLog();
    rootChangeLog.setContexts(new ContextExpression("rootContext1 OR (rootContext2) AND (rootContext3)"));
    DatabaseChangeLog childChangeLog = new DatabaseChangeLog();
    childChangeLog.setContexts(new ContextExpression("childChangeLogContext1, childChangeLogContext2 AND childChangeLogContext3"));
    childChangeLog.setIncludeContexts(new ContextExpression("includeContext1, includeContext2 AND includeContext3"));
    childChangeLog.setParentChangeLog(rootChangeLog);
    ChangeSet changeSet = new ChangeSet("1", "a", false, false, "c", changeSetContextExpression, null, childChangeLog);
    changeSet.setComments("comment12345");
    changeSet.setLabels(new Labels("newlabel123"));
    Sql[] sqls = new MarkChangeSetRanGenerator().generateSql(new MarkChangeSetRanStatement(changeSet, ChangeSet.ExecType.RERAN), new MockDatabase(), new MockSqlGeneratorChain());
    String sql = sqls[0].toSql();
    assertTrue(sql.contains("COMMENTS = 'comment12345'"));
    assertTrue(sql.contains("CONTEXTS = '(childChangeLogContext1, childChangeLogContext2 AND childChangeLogContext3) AND (includeContext1, includeContext2 AND includeContext3) AND (rootContext1 OR (rootContext2) AND (rootContext3)) AND (changeSetContext1 AND changeSetContext2)'"));
    assertTrue(sql.contains("LABELS = 'newlabel123'"));
}
Also used : ContextExpression(liquibase.ContextExpression) MarkChangeSetRanStatement(liquibase.statement.core.MarkChangeSetRanStatement) MockDatabase(liquibase.database.core.MockDatabase) Labels(liquibase.Labels) ChangeSet(liquibase.changelog.ChangeSet) DatabaseChangeLog(liquibase.changelog.DatabaseChangeLog) Sql(liquibase.sql.Sql) MockSqlGeneratorChain(liquibase.sqlgenerator.MockSqlGeneratorChain) AbstractSqlGeneratorTest(liquibase.sqlgenerator.AbstractSqlGeneratorTest) Test(org.junit.Test)

Example 2 with MockDatabase

use of liquibase.database.core.MockDatabase in project liquibase by liquibase.

the class MarkChangeSetRanGeneratorTest method generateSqlWithComplexContext.

@Test
public void generateSqlWithComplexContext() {
    String changeSetContextExpression = "changeSetContext1 AND changeSetContext2";
    DatabaseChangeLog rootChangeLog = new DatabaseChangeLog();
    rootChangeLog.setContexts(new ContextExpression("rootContext1 OR (rootContext2) AND (rootContext3)"));
    DatabaseChangeLog childChangeLog = new DatabaseChangeLog();
    childChangeLog.setContexts(new ContextExpression("childChangeLogContext1, childChangeLogContext2 AND childChangeLogContext3"));
    childChangeLog.setIncludeContexts(new ContextExpression("includeContext1, includeContext2 AND includeContext3"));
    childChangeLog.setParentChangeLog(rootChangeLog);
    ChangeSet changeSet = new ChangeSet("1", "a", false, false, "c", changeSetContextExpression, null, childChangeLog);
    Sql[] sqls = new MarkChangeSetRanGenerator().generateSql(new MarkChangeSetRanStatement(changeSet, ChangeSet.ExecType.EXECUTED), new MockDatabase(), new MockSqlGeneratorChain());
    assertTrue(sqls[0].toSql(), sqls[0].toSql().contains("(childChangeLogContext1, childChangeLogContext2 AND childChangeLogContext3) AND " + "(includeContext1, includeContext2 AND includeContext3) AND " + "(rootContext1 OR (rootContext2) AND (rootContext3)) AND " + "(changeSetContext1 AND changeSetContext2)"));
}
Also used : ContextExpression(liquibase.ContextExpression) MarkChangeSetRanStatement(liquibase.statement.core.MarkChangeSetRanStatement) MockDatabase(liquibase.database.core.MockDatabase) ChangeSet(liquibase.changelog.ChangeSet) DatabaseChangeLog(liquibase.changelog.DatabaseChangeLog) Sql(liquibase.sql.Sql) MockSqlGeneratorChain(liquibase.sqlgenerator.MockSqlGeneratorChain) AbstractSqlGeneratorTest(liquibase.sqlgenerator.AbstractSqlGeneratorTest) Test(org.junit.Test)

Example 3 with MockDatabase

use of liquibase.database.core.MockDatabase in project liquibase by liquibase.

the class TestContext method getAllDatabases.

public Set<Database> getAllDatabases() {
    if (allDatabases == null) {
        allDatabases = new HashSet<Database>();
        allDatabases.addAll(DatabaseFactory.getInstance().getImplementedDatabases());
        List<Database> toRemove = new ArrayList<Database>();
        for (Database database : allDatabases) {
            if (// todo: re-enable sqlite testing
            (database instanceof SQLiteDatabase) || (database instanceof MockDatabase)) {
                toRemove.add(database);
            }
            database.setCanCacheLiquibaseTableInfo(false);
        }
        allDatabases.removeAll(toRemove);
    }
    return allDatabases;
}
Also used : SQLiteDatabase(liquibase.database.core.SQLiteDatabase) SQLiteDatabase(liquibase.database.core.SQLiteDatabase) Database(liquibase.database.Database) MockDatabase(liquibase.database.core.MockDatabase) ArrayList(java.util.ArrayList) MockDatabase(liquibase.database.core.MockDatabase)

Example 4 with MockDatabase

use of liquibase.database.core.MockDatabase in project liquibase by liquibase.

the class SqlGeneratorChainTest method validate_oneGenerators_hasErrors.

@Test
public void validate_oneGenerators_hasErrors() {
    SortedSet<SqlGenerator> generators = new TreeSet<SqlGenerator>(new SqlGeneratorComparator());
    generators.add(new MockSqlGenerator(1, "A1", "A2").addValidationError("E1"));
    SqlGeneratorChain chain = new SqlGeneratorChain(generators);
    ValidationErrors validationErrors = chain.validate(new MockSqlStatement(), new MockDatabase());
    assertTrue(validationErrors.hasErrors());
}
Also used : ValidationErrors(liquibase.exception.ValidationErrors) TreeSet(java.util.TreeSet) MockSqlStatement(liquibase.statement.core.MockSqlStatement) MockDatabase(liquibase.database.core.MockDatabase) Test(org.junit.Test)

Example 5 with MockDatabase

use of liquibase.database.core.MockDatabase in project liquibase by liquibase.

the class SqlGeneratorChainTest method validate_twoGenerators_noErrors.

@Test
public void validate_twoGenerators_noErrors() {
    SortedSet<SqlGenerator> generators = new TreeSet<SqlGenerator>(new SqlGeneratorComparator());
    generators.add(new MockSqlGenerator(2, "B1", "B2"));
    generators.add(new MockSqlGenerator(1, "A1", "A2"));
    SqlGeneratorChain chain = new SqlGeneratorChain(generators);
    ValidationErrors validationErrors = chain.validate(new MockSqlStatement(), new MockDatabase());
    assertFalse(validationErrors.hasErrors());
}
Also used : ValidationErrors(liquibase.exception.ValidationErrors) TreeSet(java.util.TreeSet) MockSqlStatement(liquibase.statement.core.MockSqlStatement) MockDatabase(liquibase.database.core.MockDatabase) Test(org.junit.Test)

Aggregations

MockDatabase (liquibase.database.core.MockDatabase)21 Test (org.junit.Test)19 MockSqlStatement (liquibase.statement.core.MockSqlStatement)10 TreeSet (java.util.TreeSet)9 ValidationErrors (liquibase.exception.ValidationErrors)8 Sql (liquibase.sql.Sql)7 SqlStatement (liquibase.statement.SqlStatement)5 AddColumnChange (liquibase.change.core.AddColumnChange)3 ChangeSet (liquibase.changelog.ChangeSet)3 DatabaseChangeLog (liquibase.changelog.DatabaseChangeLog)3 AbstractSqlGeneratorTest (liquibase.sqlgenerator.AbstractSqlGeneratorTest)3 MockSqlGeneratorChain (liquibase.sqlgenerator.MockSqlGeneratorChain)3 AddColumnStatement (liquibase.statement.core.AddColumnStatement)3 MarkChangeSetRanStatement (liquibase.statement.core.MarkChangeSetRanStatement)3 ContextExpression (liquibase.ContextExpression)2 Database (liquibase.database.Database)2 IOException (java.io.IOException)1 ArrayList (java.util.ArrayList)1 Labels (liquibase.Labels)1 Change (liquibase.change.Change)1