package liquibase.lockservice; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import org.junit.After; import org.junit.Before; import org.junit.Test; import liquibase.database.Database; import liquibase.database.DatabaseFactory; import liquibase.sdk.database.MockDatabase; import liquibase.database.core.MySQLDatabase; import liquibase.database.core.OracleDatabase; import liquibase.lockservice.ext.MockLockService; /** * @author John Sanda */ public class LockServiceFactoryTest { @Before public void before() { LockServiceFactory.getInstance().resetAll(); } @After public void after() { LockServiceFactory.getInstance().resetAll(); } @Test public void getInstance() { assertNotNull(LockServiceFactory.getInstance()); assertTrue(LockServiceFactory.getInstance() == LockServiceFactory.getInstance()); // Collection<LockService> lockServices = LockServiceFactory.getInstance().getLockServices(); // assertEquals(0, lockServices.size()); } @Test public void getLockService() { final Database oracle1 = new OracleDatabase() { @Override public boolean equals(Object o) { return o == this; } }; final Database oracle2 = new OracleDatabase() { @Override public boolean equals(Object o) { return o == this; } }; final Database mysql = new MySQLDatabase() { @Override public boolean equals(Object o) { return o == this; } }; DatabaseFactory databaseFactory = DatabaseFactory.getInstance(); databaseFactory.register(oracle1); databaseFactory.register(oracle2); databaseFactory.register(mysql); LockServiceFactory lockServiceFactory = LockServiceFactory.getInstance(); assertNotNull(lockServiceFactory.getLockService(oracle1)); assertNotNull(lockServiceFactory.getLockService(oracle2)); assertNotNull(lockServiceFactory.getLockService(mysql)); assertTrue(lockServiceFactory.getLockService(oracle1) == lockServiceFactory.getLockService(oracle1)); assertTrue(lockServiceFactory.getLockService(oracle2) == lockServiceFactory.getLockService(oracle2)); assertTrue(lockServiceFactory.getLockService(mysql) == lockServiceFactory.getLockService(mysql)); assertTrue(lockServiceFactory.getLockService(oracle1) != lockServiceFactory.getLockService(oracle2)); assertTrue(lockServiceFactory.getLockService(oracle1) != lockServiceFactory.getLockService(mysql)); assertTrue(lockServiceFactory.getLockService(getMockDatabase()) instanceof MockLockService); } private MockDatabase getMockDatabase() { DatabaseFactory factory = DatabaseFactory.getInstance(); for (Database db : factory.getInternalDatabases()) { if (db instanceof MockDatabase) { return (MockDatabase) db; } } return null; } }