package fitnesse.wikitext.test; import fitnesse.wiki.WikiPage; import org.junit.Test; public class AliasTest { @Test public void scansAliases() { ParserTestHelper.assertScansTokenType("[[tag][link]]", "Alias", true); ParserTestHelper.assertScansTokenType("[ [tag][link]]", "Alias", false); } @Test public void parsesAliases() throws Exception { ParserTestHelper.assertParses("[[tag][PageOne]]", "SymbolList[Alias[SymbolList[Text], SymbolList[Text]]]"); ParserTestHelper.assertParses("[[PageOne][PageOne]]", "SymbolList[Alias[SymbolList[WikiWord], SymbolList[Text]]]"); ParserTestHelper.assertParses("[[PageOne][PageOne?edit]]", "SymbolList[Alias[SymbolList[WikiWord], SymbolList[Text]]]"); } @Test public void translatesAliases() throws Exception { TestSourcePage page = new TestSourcePage().withTarget("PageOne"); ParserTestHelper.assertTranslatesTo(page, "[[tag][link]]", link("tag", "link")); ParserTestHelper.assertTranslatesTo(page, "[[tag][#anchor]]", link("tag", "#anchor")); ParserTestHelper.assertTranslatesTo(page, "[[tag][PageOne]]", link("tag", "PageOne")); ParserTestHelper.assertTranslatesTo(page, "[[''tag''][PageOne]]", link("<i>tag</i>", "PageOne")); ParserTestHelper.assertTranslatesTo(page, "[[you're it][PageOne]]", link("you're it", "PageOne")); ParserTestHelper.assertTranslatesTo(page, "[[PageOne][IgnoredPage]]", link("PageOne", "PageOne")); ParserTestHelper.assertTranslatesTo(page, "[[tag][PageOne?edit]]", link("tag", "PageOne?edit")); ParserTestHelper.assertTranslatesTo(page, "[[tag][http://files/myfile]]", link("tag", "/files/myfile")); } @Test public void translatesLinkToNonExistent() { ParserTestHelper.assertTranslatesTo(new TestSourcePage().withUrl("NonExistentPage"), "[[tag][NonExistentPage]]", "tag<a title=\"create page\" href=\"NonExistentPage?edit&nonExistent=true\">[?]</a>"); } @Test public void evaluatesVariablesInLink() throws Exception { TestRoot root = new TestRoot(); WikiPage page = root.makePage("PageOne", "[[tag][PageTwo${x}]]"); root.makePage("PageTwo3", "hi"); ParserTestHelper.assertTranslatesTo(page, new TestVariableSource("x", "3"), link("tag", "PageTwo3")); } private String link(String body, String href) { return "<a href=\"" + href + "\">" + body + "</a>"; } }