package liquibase.change.core; import liquibase.change.Change; import liquibase.change.ChangeFactory; import static org.junit.Assert.*; import org.junit.Before; import org.junit.Test; /** * Tests for {@link liquibase.change.ChangeFactory} */ public class ChangeFactoryTest { @Before public void setup() { ChangeFactory.reset(); } @Test public void getInstance() { assertNotNull(ChangeFactory.getInstance()); assertTrue(ChangeFactory.getInstance() == ChangeFactory.getInstance()); } @Test public void register() { ChangeFactory.getInstance().getRegistry().clear(); assertEquals(0, ChangeFactory.getInstance().getRegistry().size()); ChangeFactory.getInstance().register(CreateTableChange.class); assertEquals(1, ChangeFactory.getInstance().getRegistry().size()); } @Test public void unregister_instance() { ChangeFactory factory = ChangeFactory.getInstance(); factory.getRegistry().clear(); assertEquals(0, factory.getRegistry().size()); AddAutoIncrementChange change = new AddAutoIncrementChange(); factory.register(CreateTableChange.class); factory.register(change.getClass()); factory.register(DropTableChange.class); assertEquals(3, factory.getRegistry().size()); factory.unregister(change.getChangeMetaData().getName()); assertEquals(2, factory.getRegistry().size()); } @Test public void unregister_doesNotExist() { ChangeFactory factory = ChangeFactory.getInstance(); factory.getRegistry().clear(); assertEquals(0, factory.getRegistry().size()); factory.register(CreateTableChange.class); factory.register(AddAutoIncrementChange.class); factory.register(DropTableChange.class); assertEquals(3, factory.getRegistry().size()); factory.unregister("doesNoExist"); assertEquals(3, factory.getRegistry().size()); } @Test public void create_exists() { Change change = ChangeFactory.getInstance().create("createTable"); assertNotNull(change); assertTrue(change instanceof CreateTableChange); } @Test public void builtInGeneratorsAreFound() { assertTrue(ChangeFactory.getInstance().getRegistry().size() > 10); } @Test public void create_notExists() { Change change = ChangeFactory.getInstance().create("badChangeName"); assertNull(change); } @Test public void reset() { ChangeFactory instance1 = ChangeFactory.getInstance(); ChangeFactory.reset(); assertFalse(instance1 == ChangeFactory.getInstance()); } }