package de.neuland.jade4j.compiler;
import de.neuland.jade4j.Jade4J;
import de.neuland.jade4j.JadeConfiguration;
import de.neuland.jade4j.TestFileHelper;
import de.neuland.jade4j.filter.CDATAFilter;
import de.neuland.jade4j.filter.PlainFilter;
import de.neuland.jade4j.template.FileTemplateLoader;
import de.neuland.jade4j.template.JadeTemplate;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import static org.junit.Assert.assertEquals;
@RunWith(Parameterized.class)
@Ignore("Ignore until originalTests20150515 are fixed")
public class OriginalJade20150927Test {
private static String[] ignoredCases = new String[]{"attrs", "attrs.js", "code.conditionals", "code.iteration",
"filters.coffeescript", "filters.less", "filters.markdown", "filters.stylus",
"mixin.blocks", "mixin.merge", "styles", "text-block", "doctype.default"};
private String file;
public OriginalJade20150927Test(String file) {
this.file = file;
}
@Test
public void shouldCompileJadeToHtml() throws Exception {
JadeConfiguration jade = new JadeConfiguration();
jade.setTemplateLoader(new FileTemplateLoader(TestFileHelper.getOriginal20150927ResourcePath("cases/"),"UTF-8"));
// jade.setExpressionHandler(new JsExpressionHandler());
jade.setMode(Jade4J.Mode.XHTML); // original jade uses xhtml by default
jade.setFilter("plain", new PlainFilter());
jade.setFilter("cdata", new CDATAFilter());
jade.setPrettyPrint(true);
JadeTemplate template = jade.getTemplate(file);
Writer writer = new StringWriter();
HashMap<String, Object> model = new HashMap<String, Object>();
model.put("title","Jade");
jade.renderTemplate(template,model, writer);
String html = writer.toString();
String expected = readFile(file.replace(".jade", ".html")).trim().replaceAll("\r", "");
assertEquals(file, expected, html.trim());
}
private String readFile(String fileName) throws IOException {
return FileUtils.readFileToString(new File(TestFileHelper.getOriginal20150927ResourcePath("cases/" + fileName)));
}
@Parameterized.Parameters(name="{0}")
public static Collection<String[]> data() {
File folder = new File(TestFileHelper.getOriginal20150927ResourcePath("/cases"));
Collection<File> files = FileUtils.listFiles(folder, new String[]{"jade"}, false);
Collection<String[]> data = new ArrayList<String[]>();
for (File file : files) {
if (!ArrayUtils.contains(ignoredCases, file.getName().replace(".jade", ""))) {
data.add(new String[]{file.getName()});
}
}
return data;
}
}