package liquibase.changelog; import liquibase.change.CheckSum; import liquibase.change.core.AddDefaultValueChange; import liquibase.change.core.CreateTableChange; import liquibase.change.core.InsertDataChange; import static org.junit.Assert.*; import org.junit.Test; /** * Tests for {@link liquibase.changelog.ChangeSet} */ public class ChangeSetTest { @Test public void getDescriptions() { ChangeSet changeSet = new ChangeSet("testId", "testAuthor", false, false,null, null, null); assertEquals("Empty", changeSet.getDescription()); changeSet.addChange(new InsertDataChange()); assertEquals("Insert Row", changeSet.getDescription()); changeSet.addChange(new InsertDataChange()); assertEquals("Insert Row (x2)", changeSet.getDescription()); changeSet.addChange(new CreateTableChange()); assertEquals("Insert Row (x2), Create Table", changeSet.getDescription()); } @Test public void generateCheckSum() { ChangeSet changeSet1 = new ChangeSet("testId", "testAuthor", false, false,null, null, null); ChangeSet changeSet2 = new ChangeSet("testId", "testAuthor", false, false,null, null, null); AddDefaultValueChange change = new AddDefaultValueChange(); change.setSchemaName("SCHEMA_NAME"); change.setTableName("TABLE_NAME"); change.setColumnName("COLUMN_NAME"); change.setDefaultValue("DEF STRING"); change.setDefaultValueNumeric("42"); change.setDefaultValueBoolean(true); change.setDefaultValueDate("2007-01-02"); changeSet1.addChange(change); changeSet2.addChange(change); CheckSum md5Sum1 = changeSet1.generateCheckSum(); change.setSchemaName("SCHEMA_NAME2"); CheckSum md5Sum2 = changeSet2.generateCheckSum(); assertFalse(md5Sum1.equals(md5Sum2)); } @Test public void isCheckSumValid_validCheckSum() { ChangeSet changeSet = new ChangeSet("1", "2",false, false, "/test.xml",null, null); CheckSum checkSum = changeSet.generateCheckSum(); assertTrue(changeSet.isCheckSumValid(checkSum)); } @Test public void isCheckSumValid_invalidCheckSum() { CheckSum checkSum = CheckSum.parse("2:asdf"); ChangeSet changeSet = new ChangeSet("1", "2",false, false, "/test.xml",null, null); assertFalse(changeSet.isCheckSumValid(checkSum)); } @Test public void isCheckSumValid_differentButValidCheckSum() { CheckSum checkSum = CheckSum.parse("2:asdf"); ChangeSet changeSet = new ChangeSet("1", "2",false, false, "/test.xml",null, null); changeSet.addValidCheckSum(changeSet.generateCheckSum().toString()); assertTrue(changeSet.isCheckSumValid(checkSum)); } }