/test/fitnesse/wikitext/parser/IncludeTest.java
Java | 252 lines | 208 code | 44 blank | 0 comment | 0 complexity | 63089b15177cdaa9d844adade399ab3b MD5 | raw file
Possible License(s): BSD-2-Clause, BSD-3-Clause, GPL-2.0
- package fitnesse.wikitext.parser;
- import static fitnesse.wikitext.parser.ParserTestHelper.assertParses;
- import static org.junit.Assert.assertTrue;
- import fitnesse.wiki.PageData;
- import fitnesse.wiki.WikiPage;
- import org.junit.Test;
- public class IncludeTest {
- @Test
- public void scansIncludes() {
- ParserTestHelper.assertScansTokenType("!include name", "Include", true);
- }
- @Test
- public void parsesIncludes() throws Exception {
- assertParses("!include PageTwo\n", "SymbolList[Include[Text, WikiWord, Text, Style[Text]]]");
- assertParses("|!include PageTwo|\n", "SymbolList[Table[TableRow[TableCell[Include[Text, WikiWord, Text, Style[Text]]]]]]");
- assertParses("!include PageTwo", "SymbolList[Include[Text, WikiWord, Text, Style[Text]]]");
- assertParses("!include -c PageTwo", "SymbolList[Include[Text, WikiWord, Text, Style[Text]]]");
- assertParses("!include <PageTwo", "SymbolList[Include[Text, WikiWord, Text, Style[Text]]]");
- assertParses("!include -setup PageTwo", "SymbolList[Include[Text, WikiWord, Text, Style[Text]]]");
- assertParses("!include -teardown PageTwo", "SymbolList[Include[Text, WikiWord, Text, Style[Text]]]");
- assertParses("!include -h PageTwo", "SymbolList[Include[Text, WikiWord, Text, Style[Text]]]");
- assertParses("!include -h .SuitePage.PageTwo", "SymbolList[Include[Text, WikiWord, Text, Style[Text]]]");
- assertParses("!include <PageTwo>", "SymbolList[Include[Text, Text, Text, Style[Text]]]");
- }
- @Test
- public void parsesIncludeNonWikiWordPages() throws Exception {
- assertParses("!include -h SuitePage.nonwikipage.PageTwo", "SymbolList[Include[Text, WikiWord, Text, Style[Text]]]");
- assertParses("!include -h nonwikipage.SuitePage.PageTwo", "SymbolList[Include[Text, WikiWord, Text, Style[Text]]]");
- assertParses("!include -h .nonwikipage.SuitePage.PageTwo", "SymbolList[Include[Text, WikiWord, Text, Style[Text]]]");
- assertParses("!include -h SuitePage.PageTwo.nonwikipage", "SymbolList[Include[Text, WikiWord, Text, Style[Text]]]");
- }
- @Test
- public void parsesIncludeSingleNonWikiWordPage() throws Exception {
- assertParses("!include -h nonwikipage", "SymbolList[Include[Text, WikiWord, Text, Style[Text]]]");
- }
- @Test
- public void translatesIncludedSibling() throws Exception {
- TestRoot root = new TestRoot();
- WikiPage currentPage = root.makePage("PageOne", "!include PageTwo");
- root.makePage("PageTwo", "page ''two''");
- String result = ParserTestHelper.translateTo(currentPage);
- assertContains(result, "class=\"collapsible\"");
- assertContains(result, "Included page: <a href=\"PageTwo\">PageTwo</a> <a href=\"PageTwo?edit&redirectToReferer=true&redirectAction=\" class=\"edit\">(edit)</a>");
- assertContains(result, "page <i>two</i>");
- }
- @Test
- public void translatesIncludeWithChildReference() throws Exception {
- TestRoot root = new TestRoot();
- WikiPage currentPage = root.makePage("PageOne", "!include PageTwo");
- WikiPage pageTwo = root.makePage("PageTwo", ">PageTwoChild");
- root.makePage(pageTwo, "PageTwoChild", "stuff");
- String result = ParserTestHelper.translateTo(currentPage);
- assertContains(result, "PageTwo.PageTwoChild");
- }
- @Test
- public void translatesRelativeInclude() throws Exception {
- TestRoot root = new TestRoot();
- WikiPage currentPage = root.makePage("PageOne", "!include >PageOneChild");
- root.makePage(currentPage, "PageOneChild", "stuff");
- String result = ParserTestHelper.translateTo(currentPage);
- assertContains(result, "stuff");
- }
- @Test
- public void translatesNestedRelativeInclude() throws Exception {
- TestRoot root = new TestRoot();
- WikiPage currentPage = root.makePage("PageOne", "!include >PageOneChild");
- WikiPage pageOneChild = root.makePage(currentPage, "PageOneChild", "!include >PageOneGrandChild");
- root.makePage(pageOneChild, "PageOneGrandChild", "stuff");
- String result = ParserTestHelper.translateTo(currentPage);
- assertContains(result, "stuff");
- }
- @Test
- public void translatesWithNonWikiWord() throws Exception {
- TestRoot root = new TestRoot();
- WikiPage currentPage = root.makePage("PageOne", "!include PageTwo.non_wiki");
- WikiPage pageTwo = root.makePage("PageTwo");
- root.makePage(pageTwo, "non_wiki", "page ''two''");
- String result = ParserTestHelper.translateTo(currentPage);
- assertContains(result, "class=\"collapsible\"");
- assertContains(result, "Included page: <a href=\"PageTwo.non_wiki\">PageTwo.non_wiki</a> <a href=\"PageTwo.non_wiki?edit&redirectToReferer=true&redirectAction=\" class=\"edit\">(edit)</a>");
- assertContains(result, "page <i>two</i>");
- }
- @Test
- public void translatesWithAllNonWikiWord() throws Exception {
- TestRoot root = new TestRoot();
- WikiPage currentPage = root.makePage("PageOne", "!include page_two.non_wiki");
- WikiPage pageTwo = root.makePage("page_two");
- root.makePage(pageTwo, "non_wiki", "page ''two''");
- String result = ParserTestHelper.translateTo(currentPage);
- assertContains(result, "class=\"collapsible\"");
- assertContains(result, "Included page: <a href=\"page_two.non_wiki\">page_two.non_wiki</a> <a href=\"page_two.non_wiki?edit&redirectToReferer=true&redirectAction=\" class=\"edit\">(edit)</a>");
- assertContains(result, "page <i>two</i>");
- }
- @Test
- public void setupsAreHidden() throws Exception {
- String result = ParserTestHelper.translateTo(makePageThatIncludesSetup());
- assertContains(result, "class=\"collapsible closed\"");
- assertContains(result, "<a href=\"PageTwo.SetUp\">");
- }
- @Test
- public void teardownsAreHiddenAndMarked() throws Exception {
- String result = ParserTestHelper.translateTo(makePageThatIncludesTeardown());
- assertContains(result, "class=\"collapsible closed teardown\"");
- assertContains(result, "<a href=\"PageTwo.TearDown\">");
- }
- private TestSourcePage makePageThatIncludesSetup() {
- return new TestSourcePage()
- .withContent("!include -setup >SetUp")
- .withTarget("PageTwo.SetUp")
- .withIncludedPage(new TestSourcePage().withContent("setup"));
- }
- private TestSourcePage makePageThatIncludesTeardown() {
- return new TestSourcePage()
- .withContent("!include -teardown >TearDown")
- .withTarget("PageTwo.TearDown")
- .withIncludedPage(new TestSourcePage().withContent("teardown"));
- }
- @Test
- public void shouldIncludePathWithNonWikiWordFollowedByNewLines() throws Exception {
- String result = ParserTestHelper.translateTo(makePageThatIncludesPageFromNonWikiWordPath("\n" +
- "\n" +
- "\n" +
- " "));
- assertContains(result, "class=\"collapsible\"");
- assertContains(result, "<a href=\"FrontPage.Tests.non_wiki_word\">");
- assertContains(result, "Hello world!");
- }
- @Test
- public void shouldIncludePathWithNonWikiWordFollowedBySpaces() throws Exception {
- String result = ParserTestHelper.translateTo(makePageThatIncludesPageFromNonWikiWordPath(" Some other text\n"));
- assertContains(result, "class=\"collapsible\"");
- assertContains(result, "<a href=\"FrontPage.Tests.non_wiki_word\">");
- assertContains(result, "Hello world!");
- }
- private TestSourcePage makePageThatIncludesPageFromNonWikiWordPath(String trailingContent) {
- return new TestSourcePage()
- .withContent("\n!include .FrontPage.Tests.non_wiki_word" + trailingContent)
- .withTarget("FrontPage.Tests.non_wiki_word")
- .withIncludedPage(new TestSourcePage().withContent("Hello world!"));
- }
- @Test
- public void translatesSetupWithoutCollapse() throws Exception {
- String result = ParserTestHelper.translateTo(makePageThatIncludesSetup(), new TestVariableSource("COLLAPSE_SETUP", "false"));
- assertContains(result, "class=\"collapsible\"");
- assertContains(result, "<a href=\"PageTwo.SetUp\">");
- }
- @Test
- public void translatesCollapsed() throws Exception {
- TestRoot root = new TestRoot();
- WikiPage includingPage = root.makePage("PageOne", "!include -c PageTwo");
- root.makePage("PageTwo", "two");
- String result = ParserTestHelper.translateTo(includingPage);
- assertContains(result, "class=\"collapsible closed\"");
- }
- @Test
- public void translatesSeamless() throws Exception {
- TestRoot root = new TestRoot();
- WikiPage includingPage = root.makePage("PageOne", "!include -seamless PageTwo");
- root.makePage("PageTwo", "two");
- ParserTestHelper.assertTranslatesTo(includingPage, "two");
- }
-
- @Test
- public void translatesHelp() throws Exception {
- TestRoot root = new TestRoot();
- WikiPage includingPage = root.makePage("PageOne", "!include -h PageTwo");
-
- WikiPage pageWithHelp = root.makePage("PageTwo", "two");
- PageData pageData = pageWithHelp.getData();
- pageData.setAttribute(PageData.PropertyHELP, "help me");
- pageWithHelp.commit(pageData);
- ParserTestHelper.assertTranslatesTo(includingPage, "help me");
- }
- private static final String NEW_LINE = System.getProperty("line.separator");
- private static final String HTML_ERR = ""
- + "<div class=\"collapsible\"><ul><li><a href='#' class='expandall'>Expand</a></li><li><a href='#' class='collapseall'>Collapse</a></li></ul>" + NEW_LINE //
- + "\t<p class=\"title\">Included page: %s</p>" + NEW_LINE
- + "\t<div><span class=\"error\">%s</span></div>" + NEW_LINE
- + "</div>" + NEW_LINE;
- @Test
- public void doesNotIncludeParent() throws Exception {
- TestRoot root = new TestRoot();
- WikiPage parent = root.makePage("ParentPage", "stuff");
- WikiPage currentPage = root.makePage(parent, "PageOne", "!include <ParentPage");
- ParserTestHelper.assertTranslatesTo(currentPage, String.format(HTML_ERR,
- "<a href=\"ParentPage\"><ParentPage</a>",
- "Error! Cannot include parent page (<ParentPage)."));
- }
- @Test
- public void doesNotIncludeInvalidPageName() throws Exception {
- TestRoot root = new TestRoot();
- WikiPage parent = root.makePage("ParentPage", "stuff");
- WikiPage currentPage = root.makePage(parent, "PageOne", "!include +not.a.+wiki.page");
- ParserTestHelper.assertTranslatesTo(currentPage, String.format(HTML_ERR,
- "+not.a.+wiki.page",
- "Page include failed because the page +not.a.+wiki.page does not have a valid wiki page name."));
- }
- @Test
- public void doesNotIncludeNotExistingPageName() throws Exception {
- TestRoot root = new TestRoot();
- WikiPage parent = root.makePage("ParentPage", "stuff");
- WikiPage currentPage = root.makePage(parent, "PageOne", "!include NotExistingPage");
- ParserTestHelper.assertTranslatesTo(currentPage, String.format(HTML_ERR,
- "NotExistingPage<a title=\"create page\" href=\"ParentPage.NotExistingPage?edit&nonExistent=true\">[?]</a>",
- "Page include failed because the page NotExistingPage does not exist."));
- }
- private void assertContains(String result, String substring) {
- assertTrue(result, result.contains(substring));
- }
- }