/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.wps.web;
import static org.junit.Assert.assertEquals;
import java.util.Iterator;
import java.util.List;
import org.apache.wicket.Component;
import org.apache.wicket.markup.repeater.OddEvenItem;
import org.apache.wicket.markup.repeater.data.DataView;
import org.geoserver.data.test.SystemTestData;
import org.geoserver.wps.ProcessGroupInfo;
import org.geoserver.wps.ProcessInfo;
import org.geoserver.wps.ProcessInfoImpl;
import org.geoserver.wps.WPSInfo;
import org.geoserver.wps.validator.MaxSizeValidator;
import org.geoserver.wps.validator.NumberRangeValidator;
import org.geoserver.wps.web.FilteredProcessesProvider.FilteredProcess;
import org.geotools.feature.NameImpl;
import org.geotools.process.geometry.GeometryProcessFactory;
import org.geotools.util.NumberRange;
import org.junit.Test;
public class ProcessSelectionPageTest extends WPSPagesTestSupport {
@Override
protected void onSetUp(SystemTestData testData) throws Exception {
super.onSetUp(testData);
// add some limits to the processes
WPSInfo wps = getGeoServer().getService(WPSInfo.class);
ProcessGroupInfo geoGroup = getGeoGroup(wps.getProcessGroups());
// for the buffer process
ProcessInfo buffer = new ProcessInfoImpl();
buffer.setEnabled(true);
buffer.setName(new NameImpl("geo", "buffer"));
buffer.getValidators().put("geom", new MaxSizeValidator(1));
buffer.getValidators().put("distance",
new NumberRangeValidator(new NumberRange<Double>(Double.class, 0d, 100d)));
buffer.getValidators().put("quadrantSegments",
new NumberRangeValidator(new NumberRange<Integer>(Integer.class, 2, 20)));
geoGroup.getFilteredProcesses().add(buffer);
// save
getGeoServer().save(wps);
}
@Test
public void test() throws Exception {
login();
WPSInfo wps = getGeoServerApplication().getGeoServer().getService(WPSInfo.class);
ProcessGroupInfo pgi = getGeoGroup(wps.getProcessGroups());
// start the page
WPSAccessRulePage accessRulePage = (WPSAccessRulePage) tester
.startPage(new WPSAccessRulePage());
ProcessSelectionPage selectionPage = (ProcessSelectionPage) tester
.startPage(new ProcessSelectionPage(accessRulePage, pgi));
// print(selectionPage, true, true);
// grab the table and check its contents
DataView datas = (DataView) tester
.getComponentFromLastRenderedPage("form:selectionTable:listContainer:items");
for (Iterator it = datas.getItems(); it.hasNext();) {
OddEvenItem item = (OddEvenItem) it.next();
FilteredProcess fp = (FilteredProcess) item.getDefaultModelObject();
Component validatedLabel = item.get("itemProperties:5:component");
if (fp.getName().getLocalPart().equals("buffer")) {
assertEquals("*", validatedLabel.getDefaultModelObject());
} else {
assertEquals("", validatedLabel.getDefaultModelObject());
}
}
}
private ProcessGroupInfo getGeoGroup(List<ProcessGroupInfo> processGroups) {
for (ProcessGroupInfo pgi : processGroups) {
if (pgi.getFactoryClass().equals(GeometryProcessFactory.class)) {
return pgi;
}
}
return null;
}
}