package liquibase.sqlgenerator.core; import static org.junit.Assert.assertEquals; import liquibase.database.Database; import liquibase.database.core.MSSQLDatabase; import liquibase.sql.Sql; import liquibase.statement.core.UpdateStatement; import liquibase.structure.core.Column; import org.junit.Test; public class UpdateGeneratorTest { @Test public void testGenerateSqlWithParamPlaceholders() { // given Database database = new MSSQLDatabase(); UpdateStatement statement = new UpdateStatement(null, null, "DATABASECHANGELOG") .addNewColumnValue("MD5SUM", "7:e27bf9c0c2313160ef960a15d44ced47") .setWhereClause( database.escapeObjectName("ID", Column.class) + " = ? " + "AND " + database.escapeObjectName("AUTHOR", Column.class) + " = ? " + "AND " + database.escapeObjectName("FILENAME", Column.class) + " = ?") .addWhereParameters( "SYPA: AUTO_START tüüp INT -> TEXT, vaartus 0 00 17 * * ?", "martin", "db/changelog.xml"); UpdateGenerator generator = new UpdateGenerator(); // when Sql[] sqls = generator.generateSql(statement, database, null); // then assertEquals( "UPDATE [DATABASECHANGELOG] " + "SET [MD5SUM] = '7:e27bf9c0c2313160ef960a15d44ced47' " + "WHERE [ID] = N'SYPA: AUTO_START tüüp INT -> TEXT, vaartus 0 00 17 * * ?' " + "AND [AUTHOR] = 'martin' " + "AND [FILENAME] = 'db/changelog.xml'", sqls[0].toSql()); } @Test public void testGenerateSqlWithNameValuePlaceholderPairs() { // given Database database = new MSSQLDatabase(); UpdateStatement statement = new UpdateStatement(null, null, "DATABASECHANGELOG") .addNewColumnValue("MD5SUM", "7:e27bf9c0c2313160ef960a15d44ced47") .setWhereClause(":name = :value AND :name = :value AND :name = :value") .addWhereColumnName("ID") .addWhereColumnName("AUTHOR") .addWhereColumnName("FILENAME") .addWhereParameters( "SYPA: AUTO_START tüüp INT -> TEXT, vaartus 0 00 17 * * ?", "martin", "db/changelog.xml"); UpdateGenerator generator = new UpdateGenerator(); // when Sql[] sqls = generator.generateSql(statement, database, null); // then assertEquals( "UPDATE [DATABASECHANGELOG] " + "SET [MD5SUM] = '7:e27bf9c0c2313160ef960a15d44ced47' " + "WHERE [ID] = N'SYPA: AUTO_START tüüp INT -> TEXT, vaartus 0 00 17 * * ?' " + "AND [AUTHOR] = 'martin' " + "AND [FILENAME] = 'db/changelog.xml'", sqls[0].toSql()); } //// @Test //// public void addNewColumnValue_nullValue() throws Exception { //// new DatabaseTestTemplate().testOnAllDatabases(new DatabaseTest() { //// //// public void performTest(Database database) { //// UpdateStatement statement = new UpdateStatement(null, TABLE_NAME); //// statement.addNewColumnValue(COLUMN_NAME, null); //// //// assertEquals("UPDATE " + database.escapeTableName(null, TABLE_NAME) + " SET " + database.escapeColumnName(null, TABLE_NAME, COLUMN_NAME) + " = NULL", statement.getSqlStatement(database)); //// } //// }); //// } // // @Test // public void execute_altSchema() throws Exception { // new DatabaseTestTemplate().testOnAvailableDatabases(new SqlStatementDatabaseTest(TestContext.ALT_SCHEMA, // new UpdateStatement(TestContext.ALT_SCHEMA, TABLE_NAME) // .addNewColumnValue(COLUMN_NAME, null)) { // protected void preExecuteAssert(DatabaseSnapshotGenerator snapshot) { // //nothing to test // } // // protected void postExecuteAssert(DatabaseSnapshotGenerator snapshot) { // //nothing to test // } // }); // } }