package liquibase.serializer; import liquibase.serializer.core.string.StringChangeLogSerializer; import liquibase.serializer.core.xml.XMLChangeLogSerializer; import static org.junit.Assert.*; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.util.List; import java.util.Map; public class ChangeLogSerializerFactoryTest { @Before public void setUp() { ChangeLogSerializerFactory.reset(); } @After public void tearDown() { ChangeLogSerializerFactory.reset(); } @Test public void getInstance() { assertNotNull(ChangeLogSerializerFactory.getInstance()); assertTrue(ChangeLogSerializerFactory.getInstance() == ChangeLogSerializerFactory.getInstance()); } @Test public void register() { ChangeLogSerializerFactory.getInstance().getSerializers().clear(); assertEquals(0, ChangeLogSerializerFactory.getInstance().getSerializers().size()); ChangeLogSerializerFactory.getInstance().register(new MockChangeLogSerializer("mock")); assertEquals(1, ChangeLogSerializerFactory.getInstance().getSerializers().size()); } @Test public void unregister_instance() { ChangeLogSerializerFactory factory = ChangeLogSerializerFactory.getInstance(); factory.getSerializers().clear(); assertEquals(0, factory.getSerializers().size()); XMLChangeLogSerializer changeLogSerializer = new XMLChangeLogSerializer(); factory.register(new StringChangeLogSerializer()); factory.register(changeLogSerializer); assertEquals(2, factory.getSerializers().size()); factory.unregister(changeLogSerializer); assertEquals(1, factory.getSerializers().size()); } @Test public void reset() { ChangeLogSerializerFactory instance1 = ChangeLogSerializerFactory.getInstance(); ChangeLogSerializerFactory.reset(); assertFalse(instance1 == ChangeLogSerializerFactory.getInstance()); } @Test public void builtInSerializersAreFound() { Map<String, List<ChangeLogSerializer>> serializers = ChangeLogSerializerFactory.getInstance().getSerializers(); assertEquals(6, serializers.size()); } @Test public void getSerializers() { ChangeLogSerializer serializer = ChangeLogSerializerFactory.getInstance().getSerializer("xml"); assertNotNull(serializer); assertSame(XMLChangeLogSerializer.class, serializer.getClass()); assertEquals(1, ChangeLogSerializerFactory.getInstance().getSerializers("xml").size()); } @Test public void highestPrioritySerializerReturned() { ChangeLogSerializerFactory factory = ChangeLogSerializerFactory.getInstance(); XMLChangeLogSerializer highestPriority = new XMLChangeLogSerializer() { @Override public int getPriority() { return super.getPriority() + 4; } }; factory.register(highestPriority); XMLChangeLogSerializer higherPriority = new XMLChangeLogSerializer() { @Override public int getPriority() { return super.getPriority() + 1; } }; factory.register(higherPriority); assertSame(highestPriority, factory.getSerializer("xml")); assertEquals(3, factory.getSerializers().get("xml").size()); } }