JAL-1905 parse url including & correctly
[jalview.git] / test / jalview / util / ParseHtmlBodyAndLinksTest.java
diff --git a/test/jalview/util/ParseHtmlBodyAndLinksTest.java b/test/jalview/util/ParseHtmlBodyAndLinksTest.java
new file mode 100644 (file)
index 0000000..5e8cd8c
--- /dev/null
@@ -0,0 +1,74 @@
+package jalview.util;
+
+import static org.testng.AssertJUnit.assertEquals;
+
+import org.testng.annotations.Test;
+
+public class ParseHtmlBodyAndLinksTest
+{
+  @Test(groups = { "Functional" })
+  public void testParseHtml_noLinks()
+  {
+    ParseHtmlBodyAndLinks testee = new ParseHtmlBodyAndLinks(
+            "<html>something here</html>", false, "\n");
+    assertEquals("something here", testee.getContent());
+    assertEquals("something here", testee.getNonHtmlContent());
+
+    // second argument makes no difference??
+    testee = new ParseHtmlBodyAndLinks("<html>something here</html>", true,
+            "\n");
+    assertEquals("something here", testee.getContent());
+    assertEquals("something here", testee.getNonHtmlContent());
+  }
+
+  @Test(groups = { "Functional" })
+  public void testParseHtml_withLinks()
+  {
+    ParseHtmlBodyAndLinks testee = new ParseHtmlBodyAndLinks(
+            "<html>Please click <a href=\"http://www.nowhere.com\">on this</a> to learn more about <a href=\"http://www.somewhere.com/here\">this</a></html>",
+            false, "\n");
+    assertEquals(
+            "Please click on this%LINK% to learn more about this%LINK%",
+            testee.getContent());
+    assertEquals(
+            "Please click on this%LINK% to learn more about this%LINK%",
+            testee.getNonHtmlContent());
+    assertEquals(2, testee.getLinks().size());
+    assertEquals("on this|http://www.nowhere.com", testee.getLinks().get(0));
+    assertEquals("this|http://www.somewhere.com/here", testee.getLinks()
+            .get(1));
+  }
+
+  @Test(groups = { "Functional" })
+  public void testParseHtml_withLinksWithParameters()
+  {
+    ParseHtmlBodyAndLinks testee = new ParseHtmlBodyAndLinks(
+            "<html>Please click <a href=\"http://www.nowhere.com?id=234&taxon=human\">on this</a> to learn more</html>",
+            false, "\n");
+    assertEquals("Please click on this%LINK% to learn more",
+            testee.getContent());
+    assertEquals("Please click on this%LINK% to learn more",
+            testee.getNonHtmlContent());
+    assertEquals(1, testee.getLinks().size());
+    assertEquals("on this|http://www.nowhere.com?id=234&taxon=human",
+            testee.getLinks().get(0));
+  }
+
+  @Test(groups = { "Functional" })
+  public void testParseHtml_withLinksWithEncoding()
+  {
+    ParseHtmlBodyAndLinks testee = new ParseHtmlBodyAndLinks(
+            "<html>Please click <a href=\"http://www.nowhere.com?id=234&amp;taxon=human&amp;id&gt;3&amp;id&lt;10\">on this</a> to learn &amp;&lt;&gt;more</html>",
+            false, "\n");
+    // html encoding in the text body is translated
+    assertEquals("Please click on this%LINK% to learn &<>more",
+            testee.getContent());
+    assertEquals("Please click on this%LINK% to learn &<>more",
+            testee.getNonHtmlContent());
+    assertEquals(1, testee.getLinks().size());
+    // html encoding in the url links is not translated
+    assertEquals(
+            "on this|http://www.nowhere.com?id=234&amp;taxon=human&amp;id&gt;3&amp;id&lt;10",
+            testee.getLinks().get(0));
+  }
+}