package uk.co.optimisticpanda.dropwizard; import static org.junit.Assert.assertEquals; import org.junit.Test; import uk.co.optimisticpanda.dropwizard.commands.MainDbDeployCommand; import uk.co.optimisticpanda.dropwizard.dbdeploy.ClasspathDbDeploy; import com.dbdeploy.database.LineEnding; import com.google.common.base.Charsets; import com.google.common.collect.ImmutableList; import com.yammer.dropwizard.cli.Command; import com.yammer.dropwizard.config.Bootstrap; public class DbDeployBundleTest { @Test public void checkAppWithBundleHasDbdeployCommand() throws Exception { TestService service = new TestService(); Bootstrap<TestConfiguration> bootstrap = new Bootstrap<TestConfiguration>(service); service.initialize(bootstrap); ImmutableList<Command> commands = bootstrap.getCommands(); assertEquals(1, commands.size()); assertEquals(MainDbDeployCommand.class, commands.get(0).getClass()); } @Test public void checkDbDeployIsPopulatedCorrectly() throws Exception { TestService service = new TestService(); Bootstrap<TestConfiguration> bootstrap = new Bootstrap<TestConfiguration>(service); service.initialize(bootstrap); ImmutableList<Command> commands = bootstrap.getCommands(); MainDbDeployCommand<?> command = (MainDbDeployCommand<?>) commands.get(0); DbDeployDatabaseConfiguration config = new DbDeployDatabaseConfiguration(); config.setUrl("test url"); config.setUser("test user"); config.setDriverClass("driver class"); config.setPassword("password"); DbDeployProperties props = new DbDeployProperties(); props.setDbms("mysql"); props.setOutputFile("filea"); props.setScriptLocation("fileb"); props.setUndoOutputFile("filec"); props.setTemplateLocation("filed"); props.setChangelogTableName("changelog"); props.setDelimiter(";"); props.setDelimiterType("normal"); props.setEncoding("UTF-8"); props.setLastChangeToApply(Long.MAX_VALUE); props.setLineEnding("platform"); config.dbdeploy = props; ClasspathDbDeploy dbDeploy = command.getDbDeploy(config); assertEquals(config.getUrl(), dbDeploy.getUrl()); assertEquals(config.getUser(), dbDeploy.getUserid()); assertEquals(config.getDriverClass(), dbDeploy.getDriver()); assertEquals(config.getPassword(), dbDeploy.getPassword()); assertEquals("changelog", dbDeploy.getChangeLogTableName()); assertEquals("mysql", dbDeploy.getDbms()); assertEquals(";", dbDeploy.getDelimiter()); assertEquals(Charsets.UTF_8, dbDeploy.getEncoding()); assertEquals(Long.valueOf(Long.MAX_VALUE), dbDeploy.getLastChangeToApply()); assertEquals(LineEnding.platform, dbDeploy.getLineEnding()); } }