package org.geoserver.wps.web;
import java.util.List;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.TextArea;
import org.apache.wicket.util.tester.FormTester;
import org.geoserver.web.GeoServerWicketTestSupport;
import org.geoserver.wps.web.WPSRequestBuilder;
public class WPSRequestBuilderTest extends GeoServerWicketTestSupport {
public void testJTSAreaWorkflow() throws Exception {
login();
// start the page
tester.startPage(new WPSRequestBuilder());
tester.assertComponent("form:requestBuilder:process", DropDownChoice.class);
// look for JTS area
DropDownChoice choice = (DropDownChoice) tester
.getComponentFromLastRenderedPage("form:requestBuilder:process");
int index = -1;
final List choices = choice.getChoices();
for (int i = 0; i < choices.size(); i++) {
if (choices.get(i).equals("JTS:area")) {
index = 0;
break;
}
}
// choose a process
FormTester form = tester.newFormTester("form");
form.select("requestBuilder:process", index);
tester.executeAjaxEvent("form:requestBuilder:process", "onchange");
// print(tester.getComponentFromLastRenderedPage("form"), true, true);
// check process description
tester.assertModelValue("form:requestBuilder:process", "JTS:area");
Label label = (Label) tester
.getComponentFromLastRenderedPage("form:requestBuilder:descriptionContainer:processDescription");
assertTrue(label.getDefaultModelObjectAsString().contains("geometry area"));
tester.assertComponent(
"form:requestBuilder:inputContainer:inputs:0:paramValue:editor:mime",
DropDownChoice.class);
tester.assertComponent(
"form:requestBuilder:inputContainer:inputs:0:paramValue:editor:textarea",
TextArea.class);
// fill in the params
form = tester.newFormTester("form");
form.select("requestBuilder:inputContainer:inputs:0:paramValue:editor:mime", 2);
form.setValue("requestBuilder:inputContainer:inputs:0:paramValue:editor:textarea",
"POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))");
form.submit();
tester.clickLink("form:execute", true);
// print(tester.getLastRenderedPage(), true, true);
assertTrue(tester.getComponentFromLastRenderedPage("responseWindow")
.getDefaultModelObjectAsString().contains("wps:Execute"));
// unfortunately the wicket tester does not allow us to get work with the popup window
// contents,
// as that requires a true browser to execute the request
}
}