package fitnesse.responders.editing;
import static org.junit.Assert.assertEquals;
import static util.RegexTestCase.assertSubString;
import fitnesse.http.MockRequest;
import fitnesse.http.SimpleResponse;
import fitnesse.testutil.FitNesseUtil;
import fitnesse.wiki.PathParser;
import fitnesse.wiki.WikiPage;
import fitnesse.wiki.WikiPageUtil;
import fitnesse.wiki.fs.InMemoryPage;
import org.junit.Before;
import org.junit.Test;
public class NewPageResponderTest {
private WikiPage root;
private MockRequest request;
private NewPageResponder responder;
@Before
public void setUp() throws Exception {
root = InMemoryPage.makeRoot("root");
FitNesseUtil.makeTestContext(root);
request = new MockRequest();
responder = new NewPageResponder();
}
@Test
public void testResponse() throws Exception {
request.setResource("root");
SimpleResponse response = (SimpleResponse) responder.makeResponse(FitNesseUtil.makeTestContext(root),
request);
assertEquals(200, response.getStatus());
String body = response.getContent();
assertSubString("<html>", body);
assertSubString("<form", body);
assertSubString("method=\"post\"", body);
assertSubString("name=\"responder\"", body);
assertSubString("name=\"" + EditResponder.HELP_TEXT + "\"", body);
assertSubString("type=\"submit\"", body);
assertSubString("textarea class=\"wikitext no_wrap mousetrap\"", body);
}
@Test
public void testTemplateListPopulates() throws Exception {
WikiPageUtil.addPage(root, PathParser.parse("TemplateLibrary"), "template library");
WikiPageUtil.addPage(root, PathParser.parse("TemplateLibrary.TemplateOne"), "template 1");
WikiPageUtil.addPage(root, PathParser.parse("TemplateLibrary.TemplateTwo"), "template 2");
WikiPageUtil.addPage(root, PathParser.parse("ChildPage"), "child content with <html>");
request.setResource("ChildPage");
SimpleResponse response = (SimpleResponse) responder.makeResponse(FitNesseUtil.makeTestContext(root),
request);
assertEquals(200, response.getStatus());
String body = response.getContent();
assertSubString("<html>", body);
assertSubString("<form", body);
assertSubString("method=\"post\"", body);
assertSubString("name=\"responder\"", body);
assertSubString("name=\"" + EditResponder.HELP_TEXT + "\"", body);
assertSubString("select id=\"" + EditResponder.TEMPLATE_MAP + "\"", body);
assertSubString("option value=\"" + ".TemplateLibrary.TemplateOne" + "\"", body);
assertSubString("option value=\"" + ".TemplateLibrary.TemplateTwo" + "\"", body);
assertSubString("type=\"submit\"", body);
assertSubString("textarea class=\"wikitext no_wrap mousetrap\"", body);
}
@Test
public void shouldSetPageTemplateIfProvidedAsArgument() {
WikiPageUtil.addPage(root, PathParser.parse("FancyTemplate"), "template page");
request.setResource("");
request.addInput(NewPageResponder.PAGE_TEMPLATE, ".FancyTemplate");
SimpleResponse response = (SimpleResponse) responder.makeResponse(FitNesseUtil.makeTestContext(root),
request);
assertEquals(200, response.getStatus());
String body = response.getContent();
assertSubString("<form", body);
assertSubString("name=\"" + NewPageResponder.PAGE_TEMPLATE + "\"", body);
assertSubString("value=\".FancyTemplate\"", body);
}
}