package hudson.plugins.trac; import hudson.MarkupText; import junit.framework.TestCase; public class TracLinkAnnotatorTest extends TestCase { private static final String TRAC_URL = "http://trac/"; public void testWikiLinkSyntax() { assertAnnotatedTextEquals("Nothing here.", "Nothing here."); assertAnnotatedTextEquals("Text with WikiLink.", "Text with <a href='" + TRAC_URL + "wiki/WikiLink'>WikiLink</a>."); } public void testTicketLinkSyntax() { assertAnnotatedTextEquals("Text with ticket #123 link", "Text with ticket <a href='" + TRAC_URL + "ticket/123'>#123</a> link"); assertAnnotatedTextEquals("#123", "<a href='" + TRAC_URL + "ticket/123'>#123</a>"); } public void testInterTracShortTicketLinkSyntax() { assertAnnotatedTextEquals("Text with #T123 link", "Text with <a href='" + TRAC_URL + "search?q=%23T123'>#T123</a> link"); assertAnnotatedTextEquals("#T123", "<a href='" + TRAC_URL + "search?q=%23T123'>#T123</a>"); } public void testInterTracMediumTicketLinkSyntax() { assertAnnotatedTextEquals("Text with trac:#123 link", "Text with <a href='" + TRAC_URL + "search?q=trac%3A%23123'>trac:#123</a> link"); assertAnnotatedTextEquals("trac:#123", "<a href='" + TRAC_URL + "search?q=trac%3A%23123'>trac:#123</a>"); } public void testInterTracFullTicketLinkSyntax() { assertAnnotatedTextEquals("Text with trac:ticket:123 link", "Text with <a href='" + TRAC_URL + "search?q=trac%3Aticket%3A123'>trac:ticket:123</a> link"); assertAnnotatedTextEquals("trac:ticket:123", "<a href='" + TRAC_URL + "search?q=trac%3Aticket%3A123'>trac:ticket:123</a>"); } public void testInterTracShortChangesetLinkSyntax() { assertAnnotatedTextEquals("Text with [T123] link", "Text with <a href='" + TRAC_URL + "search?q=%5BT123%5D'>[T123]</a> link"); assertAnnotatedTextEquals("[T123]", "<a href='" + TRAC_URL + "search?q=%5BT123%5D'>[T123]</a>"); } public void testInterTracFullChangesetLinkSyntax() { assertAnnotatedTextEquals("Text with trac:changeset:123 link", "Text with <a href='" + TRAC_URL + "search?q=trac%3Achangeset%3A123'>trac:changeset:123</a> link"); assertAnnotatedTextEquals("trac:changeset:123", "<a href='" + TRAC_URL + "search?q=trac%3Achangeset%3A123'>trac:changeset:123</a>"); } public void testInterTracFullWikiLinkSyntax() { assertAnnotatedTextEquals("Text with trac:wiki:PageName link", "Text with <a href='" + TRAC_URL + "search?q=trac%3Awiki%3APageName'>trac:wiki:PageName</a> link"); assertAnnotatedTextEquals("trac:wiki:PageName", "<a href='" + TRAC_URL + "search?q=trac%3Awiki%3APageName'>trac:wiki:PageName</a>"); } public void testMultipleLinks() { String ticketUrl = "<a href='" + TRAC_URL + "ticket/101'>#101</a>"; String changesetUrl = "<a href='" + TRAC_URL + "changeset/303'>[303]</a>"; assertAnnotatedTextEquals("#101 for [303]: Text", ticketUrl + " for " + changesetUrl + ": Text"); } private void assertAnnotatedTextEquals(String originalText, String expectedAnnotatedText) { MarkupText markupText = new MarkupText(originalText); TracLinkAnnotator annotator = new TracLinkAnnotator(); annotator.annotate(TRAC_URL, markupText); assertEquals(expectedAnnotatedText, markupText.toString()); } }