org.geoserver.web.data.layer.NewLayerPageTest.java Source code

Java tutorial

Introduction

Here is the source code for org.geoserver.web.data.layer.NewLayerPageTest.java

Source

/* (c) 2014 - 2016 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.web.data.layer;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;

import java.net.URL;
import java.util.Arrays;

import org.apache.wicket.Component;
import org.geoserver.catalog.CatalogBuilder;
import org.geoserver.catalog.DataStoreInfo;
import org.geoserver.catalog.FeatureTypeInfo;
import org.geoserver.catalog.ResourcePool;
import org.geoserver.catalog.impl.DataStoreInfoImpl;
import org.geoserver.data.test.MockData;
import org.geoserver.web.GeoServerWicketTestSupport;
import org.geoserver.web.data.resource.ResourceConfigurationPage;
import org.geoserver.web.wicket.GeoServerTablePanel;
import org.geotools.data.DataStore;
import org.geotools.data.wfs.WFSDataStoreFactory;
import org.junit.Test;

public class NewLayerPageTest extends GeoServerWicketTestSupport {

    private static final String TABLE_PATH = "selectLayersContainer:selectLayers:layers";

    @Test
    public void testKnownStore() {
        login();
        DataStoreInfo store = getCatalog().getStoreByName(MockData.CDF_PREFIX, DataStoreInfo.class);
        tester.startPage(new NewLayerPage(store.getId()));

        tester.assertRenderedPage(NewLayerPage.class);
        assertNull(tester.getComponentFromLastRenderedPage("selector"));
        GeoServerTablePanel table = (GeoServerTablePanel) tester.getComponentFromLastRenderedPage(TABLE_PATH);
        assertEquals(getCatalog().getResourcesByStore(store, FeatureTypeInfo.class).size(),
                table.getDataProvider().size());
    }

    @Test
    public void testAjaxChooser() {
        login();
        tester.startPage(new NewLayerPage());

        tester.assertRenderedPage(NewLayerPage.class);

        // the tester will return null if the component is there, but not visible
        assertNull(tester.getComponentFromLastRenderedPage("selectLayersContainer:selectLayers"));

        // select the first datastore
        tester.newFormTester("selector").select("storesDropDown", 1);
        tester.executeAjaxEvent("selector:storesDropDown", "change");

        // now it should be there
        assertNotNull(tester.getComponentFromLastRenderedPage("selectLayersContainer:selectLayers"));

        // select "choose one" item (unselect the form)
        tester.newFormTester("selector").setValue("storesDropDown", "");
        tester.executeAjaxEvent("selector:storesDropDown", "change");

        // now it should be there
        assertNull(tester.getComponentFromLastRenderedPage("selectLayersContainer:selectLayers"));
    }

    @Test
    public void testAddLayer() throws Exception {
        login();
        DataStoreInfo store = getCatalog().getStoreByName(MockData.CITE_PREFIX, DataStoreInfo.class);
        NewLayerPage page = new NewLayerPage(store.getId());
        tester.startPage(page);

        // get the name of the first layer in the list
        String[] names = ((DataStore) store.getDataStore(null)).getTypeNames();
        Arrays.sort(names);

        tester.clickLink(TABLE_PATH + ":listContainer:items:1:itemProperties:2:component:link", true);
        tester.assertRenderedPage(ResourceConfigurationPage.class);
        assertEquals(names[0],
                ((ResourceConfigurationPage) tester.getLastRenderedPage()).getResourceInfo().getName());
    }

    @Test
    public void testAddLayerFromWFSDataStore() throws Exception {
        login();
        CatalogBuilder cb = new CatalogBuilder(getCatalog());
        DataStoreInfo storeInfo = cb.buildDataStore(MockData.CITE_PREFIX);
        ((DataStoreInfoImpl) storeInfo).setId("1");

        getCatalog().add(storeInfo);

        try {
            URL url = getClass().getResource("/WFSCapabilities.xml");

            storeInfo.getConnectionParameters().put(WFSDataStoreFactory.URL.key, url);
            // required or the store won't fetch caps from a file
            storeInfo.getConnectionParameters().put("TESTING", Boolean.TRUE);
            final ResourcePool rp = getCatalog().getResourcePool();
            DataStore store = (DataStore) rp.getDataStore(storeInfo);

            NewLayerPage page = new NewLayerPage(storeInfo.getId());
            tester.startPage(page);
            Component link = tester.getComponentFromLastRenderedPage("selectLayersContainer")
                    .get("createCascadedWFSStoredQueryContainer");

            assertTrue(link.isVisible());
        } finally {
            getCatalog().remove(storeInfo);
        }
    }

    @Test
    public void testAddLayerFromNotWFSDataStore() throws Exception {
        login();
        DataStoreInfo store = getCatalog().getStoreByName(MockData.CITE_PREFIX, DataStoreInfo.class);
        NewLayerPage page = new NewLayerPage(store.getId());
        tester.startPage(page);

        Component link = tester.getComponentFromLastRenderedPage("selectLayersContainer")
                .get("createCascadedWFSStoredQueryContainer");

        assertFalse(link.isVisible());
    }
}