package com.cedricblondeau.webpage2html.transformers; import com.cedricblondeau.webpage2html.Configuration; import com.cedricblondeau.webpage2html.transformers.http.HttpCacheUtils; import junit.framework.TestCase; import org.jsoup.nodes.Element; import java.net.MalformedURLException; import java.net.URL; public class HtmlTransformerTest extends TestCase { private HtmlTransformer getHtmlTransformer(String html) { try { URL url = new URL("http://www.cedricblondeau.com/"); return new HtmlTransformer(html, url, "UTF-8", new Configuration()); } catch (MalformedURLException e) { e.printStackTrace(); return null; } } public void testShouldInjectMetaCharsetIfNotPresent() { String html = "<html><head><title>Héllo world!</title></head><body></body></html>"; HtmlTransformer htmlTransformer = getHtmlTransformer(html); htmlTransformer.transform(); assertTrue(htmlTransformer.getDocument().head().getElementsByTag("meta").hasAttr("charset")); } public void testShouldTransformStyleAttributeValue() { String base64 = "WW91IGRpZG4ndCBzYXkgdGhlIG1hZ2ljIHdvcmQh"; HttpCacheUtils.cacheMockResourceFromBase64("http://www.cedricblondeau.com/img/test.png", "image/png", base64); String html = "<div id='myDiv' style='background: url(/img/test.png) center center;' />"; HtmlTransformer htmlTransformer = getHtmlTransformer(html); htmlTransformer.transform(); Element element = htmlTransformer.getDocument().getElementById("myDiv"); assertTrue(element.attr("style").contains(String.format("data:image/png;base64,%s", base64))); } public void testShouldTransformLinkStylesheet() { String css = "body { background: red; }"; HttpCacheUtils.cacheMockResourceFromSource("http://www.cedricblondeau.com/css/test.css", "text/css", css); String html = "<link rel='stylesheet' href='/css/test.css' />"; HtmlTransformer htmlTransformer = getHtmlTransformer(html); htmlTransformer.transform(); Element element = htmlTransformer.getDocument().getElementsByTag("style").first(); assertEquals(css, element.html()); } public void testShouldNotTransformLinkCanonical() { String html = "<link rel=\"canonical\" href=\"http:/www.cedricblondeau.com\">"; HtmlTransformer htmlTransformer = getHtmlTransformer(html); htmlTransformer.transform(); Element element = htmlTransformer.getDocument().getElementsByTag("link").first(); assertEquals(html, element.outerHtml()); } }