org.geoserver.wps.web.ProcessSelectionPageTest.java Source code

Java tutorial

Introduction

Here is the source code for org.geoserver.wps.web.ProcessSelectionPageTest.java

Source

/* (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;
    }

}