/**
*
*/
package org.minnal.migrations.plugin;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import org.minnal.core.Application;
import org.minnal.core.config.ApplicationConfiguration;
import org.minnal.core.config.DatabaseConfiguration;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import com.googlecode.flyway.core.Flyway;
/**
* @author ganeshs
*
*/
public class MigrationsPluginTest {
private MigrationsPlugin plugin;
private Application<ApplicationConfiguration> application;
private Flyway flyway;
private DatabaseConfiguration dbConfig;
@BeforeMethod
public void setup() {
flyway = mock(Flyway.class);
plugin = new MigrationsPlugin(flyway);
application = mock(Application.class);
dbConfig = mock(DatabaseConfiguration.class);
when(dbConfig.getUrl()).thenReturn("jdbc:mysql://localhost/test");
when(dbConfig.getUsername()).thenReturn("test");
when(dbConfig.getPassword()).thenReturn("");
ApplicationConfiguration appConfig = mock(ApplicationConfiguration.class);
when(appConfig.getDatabaseConfiguration()).thenReturn(dbConfig);
when(application.getConfiguration()).thenReturn(appConfig);
}
@Test
public void shouldSetDataSourceOnInit() {
plugin.init(application);
verify(flyway).setDataSource("jdbc:mysql://localhost", dbConfig.getUsername(), dbConfig.getPassword());
verify(flyway).setSchemas("test");
}
@Test
public void shouldMigrateOnInit() {
plugin.init(application);
verify(flyway).migrate();
}
}