package fitnesse.responders.templateUtilities;
import static org.junit.Assert.assertTrue;
import org.apache.velocity.VelocityContext;
import org.junit.Before;
import org.junit.Test;
import fitnesse.FitNesseContext;
import fitnesse.components.TraversalListener;
import fitnesse.components.Traverser;
import fitnesse.testutil.FitNesseUtil;
import fitnesse.wiki.InMemoryPage;
import fitnesse.wiki.PageCrawler;
import fitnesse.wiki.PathParser;
import fitnesse.wiki.WikiPage;
public class TraverseDirectiveTest {
private WikiPage root;
private FitNesseContext context;
@Before
public void setUp() {
root = InMemoryPage.makeRoot("root");
context = FitNesseUtil.makeTestContext(root);
context.pageFactory.getVelocityEngine().loadDirective(TraverseDirective.class.getName());
}
@Test
public void testRender() {
VelocityContext velocityContext = new VelocityContext();
velocityContext.put("resultResponder", new MockTraverser());
String tmpl = context.pageFactory.render(velocityContext, "searchResults.vm");
assertTrue(tmpl.contains("<a href=\"PageOne\">PageOne</a>"));
}
public static class MockTraverser implements Traverser {
@Override
public void traverse(TraversalListener observer) {
WikiPage root = InMemoryPage.makeRoot("root");
PageCrawler crawler = root.getPageCrawler();
observer.process(crawler.addPage(root, PathParser.parse("PageOne"), "PageOne"));
observer.process(crawler.addPage(root, PathParser.parse("PageTwo"), "PageOne"));
observer.process(crawler.addPage(root, PathParser.parse("ChildPage"), ".PageOne"));
}
}
}