package uk.co.optimisticpanda.dropwizard.dbdeploy; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import java.io.FileNotFoundException; import java.io.IOException; import java.io.StringWriter; import java.util.Arrays; import org.junit.Test; import com.dbdeploy.scripts.ChangeScript; public class ClasspathTemplateBasedApplierTest { @Test public void checkCanLoadTemplatesWithoutPrefix() throws IOException { ClasspathTemplateBasedApplier applier = createApplier("templates/mysql"); assertNotNull(applier.getTemplate("mysql_apply.ftl")); assertNotNull(applier.getTemplate("mysql_undo.ftl")); } @Test public void checkCanLoadTemplatesWithPrefix() throws IOException { ClasspathTemplateBasedApplier applier = createApplier("/templates/mysql"); assertNotNull(applier.getTemplate("mysql_apply.ftl")); assertNotNull(applier.getTemplate("mysql_undo.ftl")); } @Test public void checkDefaultTemplatesAreAccessible() throws IOException { ClasspathTemplateBasedApplier applier = createApplier("/"); assertNotNull(applier.getTemplate("mysql_apply.ftl")); assertNotNull(applier.getTemplate("mysql_undo.ftl")); } @Test(expected = FileNotFoundException.class) public void checkErrorsWhenNonExistingTemplate() throws IOException { ClasspathTemplateBasedApplier applier = createApplier("/templates/mysql"); assertNotNull(applier.getTemplate("nonexistent.ftl")); } @Test public void checkTemplateQualifier() throws IOException { ClasspathTemplateBasedApplier applier = createApplier("/templates/mysql"); assertEquals("apply", applier.getTemplateQualifier()); } @Test public void checkApplyMethod() throws IOException{ ClasspathTemplateBasedApplier applier = createApplier("/templates/mysql"); ChangeScript dummy = new ChangeScript(1L, "description"){ @Override public String getContent() { return ""; }}; applier.apply(Arrays.asList(dummy)); } private ClasspathTemplateBasedApplier createApplier(String templateLocation) throws IOException { StringWriter writer = new StringWriter(); return new ClasspathTemplateBasedApplier(writer, "mysql", "changelog", templateLocation); } }