package hudson.plugins.redmine; import hudson.MarkupText; import hudson.plugins.redmine.RedmineLinkAnnotator; import junit.framework.TestCase; public class RedmineLinkAnnotatorTest extends TestCase { private static final String REDMINE_URL = "http://local.redmine/"; public void testWikiLinkSyntax() { assertAnnotatedTextEquals("Nothing here.", "Nothing here."); assertAnnotatedTextEquals("Text with WikiLink.", "Text with <a href='" + REDMINE_URL + "wiki/WikiLink'>WikiLink</a>."); assertAnnotatedTextEquals("#42", "<a href='" + REDMINE_URL + "issues/show/42'>#42</a>"); assertAnnotatedTextEquals("IssueID 22", "<a href='" + REDMINE_URL + "issues/show/22'>IssueID 22</a>"); assertAnnotatedTextEquals("fixes 10,11,12", "<a href='" + REDMINE_URL + "issues/show/10'>fixes 10</a>," + "<a href='" + REDMINE_URL + "issues/show/11'>11</a>," + "<a href='" + REDMINE_URL + "issues/show/12'>12</a>"); assertAnnotatedTextEquals("references 110,111,112,113", "<a href='" + REDMINE_URL + "issues/show/110'>references 110</a>," + "<a href='" + REDMINE_URL + "issues/show/111'>111</a>," + "<a href='" + REDMINE_URL + "issues/show/112'>112</a>," + "<a href='" + REDMINE_URL + "issues/show/113'>113</a>"); assertAnnotatedTextEquals("closes 210, 211", "<a href='" + REDMINE_URL + "issues/show/210'>closes 210</a>, " + "<a href='" + REDMINE_URL + "issues/show/211'>211</a>"); assertAnnotatedTextEquals("closes 210 211", "<a href='" + REDMINE_URL + "issues/show/210'>closes 210</a> " + "<a href='" + REDMINE_URL + "issues/show/211'>211</a>"); assertAnnotatedTextEquals("refs 310, 11, 4, 4120", "<a href='" + REDMINE_URL + "issues/show/310'>refs 310</a>, " + "<a href='" + REDMINE_URL + "issues/show/11'>11</a>, " + "<a href='" + REDMINE_URL + "issues/show/4'>4</a>, " + "<a href='" + REDMINE_URL + "issues/show/4120'>4120</a>"); assertAnnotatedTextEquals("refs 1&11&111&1111", "<a href='" + REDMINE_URL + "issues/show/1'>refs 1</a>&" + "<a href='" + REDMINE_URL + "issues/show/11'>11</a>&" + "<a href='" + REDMINE_URL + "issues/show/111'>111</a>&" + "<a href='" + REDMINE_URL + "issues/show/1111'>1111</a>"); assertAnnotatedTextEquals("IssueID 21&11&100", "<a href='" + REDMINE_URL + "issues/show/21'>IssueID 21</a>&" + "<a href='" + REDMINE_URL + "issues/show/11'>11</a>&" + "<a href='" + REDMINE_URL + "issues/show/100'>100</a>"); assertAnnotatedTextEquals("refs #1,#11,#111,#1111", "<a href='" + REDMINE_URL + "issues/show/1'>refs #1</a>," + "<a href='" + REDMINE_URL + "issues/show/11'>#11</a>," + "<a href='" + REDMINE_URL + "issues/show/111'>#111</a>," + "<a href='" + REDMINE_URL + "issues/show/1111'>#1111</a>"); assertAnnotatedTextEquals("refs #1, #11, #111,#1111", "<a href='" + REDMINE_URL + "issues/show/1'>refs #1</a>, " + "<a href='" + REDMINE_URL + "issues/show/11'>#11</a>, " + "<a href='" + REDMINE_URL + "issues/show/111'>#111</a>," + "<a href='" + REDMINE_URL + "issues/show/1111'>#1111</a>"); assertAnnotatedTextEquals("closes #1&#11", "<a href='" + REDMINE_URL + "issues/show/1'>closes #1</a>&" + "<a href='" + REDMINE_URL + "issues/show/11'>#11</a>"); assertAnnotatedTextEquals("IssueID #1 #11", "<a href='" + REDMINE_URL + "issues/show/1'>IssueID #1</a> " + "<a href='" + REDMINE_URL + "issues/show/11'>#11</a>"); } private void assertAnnotatedTextEquals(String originalText, String expectedAnnotatedText) { MarkupText markupText = new MarkupText(originalText); for (RedmineLinkAnnotator.LinkMarkup markup : RedmineLinkAnnotator.MARKUPS) { markup.process(markupText, REDMINE_URL); } System.out.println(markupText.toString()); assertEquals(expectedAnnotatedText, markupText.toString()); } }