/* (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.resource; import static org.junit.Assert.*; import java.io.IOException; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxEventBehavior; import org.apache.wicket.ajax.AjaxRequestTarget; import org.geoserver.catalog.Catalog; import org.geoserver.catalog.CatalogBuilder; import org.geoserver.catalog.DataStoreInfo; import org.geoserver.catalog.FeatureTypeInfo; import org.geoserver.catalog.LayerInfo; import org.geoserver.catalog.ResourceInfo; import org.geoserver.data.test.MockData; import org.geoserver.web.GeoServerWicketTestSupport; import org.geotools.feature.NameImpl; import org.geotools.geometry.jts.ReferencedEnvelope; import org.junit.Test; public class ResourceConfigurationPageTest extends GeoServerWicketTestSupport { @Test public void testBasic() { LayerInfo layer = getGeoServerApplication().getCatalog().getLayerByName(getLayerId(MockData.BASIC_POLYGONS)); login(); tester.startPage(new ResourceConfigurationPage(layer, false)); tester.assertLabel("publishedinfoname", layer.getResource().getPrefixedName()); tester.assertComponent("publishedinfo:tabs:panel:theList:0:content", BasicResourceConfig.class); } @Test public void testUpdateResource() { LayerInfo layer = getGeoServerApplication().getCatalog().getLayerByName(getLayerId(MockData.GEOMETRYLESS)); login(); ResourceConfigurationPage page = new ResourceConfigurationPage(layer, false); tester.startPage(page); tester.assertContainsNot("the_geom"); FeatureTypeInfo info = getCatalog().getResourceByName(MockData.BRIDGES.getLocalPart(), FeatureTypeInfo.class); //Apply the new feature to the page page.add(new AjaxEventBehavior("ondblclick") { public void onEvent(AjaxRequestTarget target) { page.updateResource(info, target); } }); tester.executeAjaxEvent(page, "ondblclick"); print(tester.getLastRenderedPage(), true, true); //verify contents were updated tester.assertContains("the_geom"); } @Test public void testComputeLatLon() throws Exception { final Catalog catalog = getCatalog(); final CatalogBuilder cb = new CatalogBuilder(catalog); cb.setStore(catalog.getStoreByName(MockData.POLYGONS.getPrefix(), DataStoreInfo.class)); FeatureTypeInfo ft = cb.buildFeatureType(new NameImpl(MockData.POLYGONS)); LayerInfo layer = cb.buildLayer(ft); login(); ResourceConfigurationPage page = new ResourceConfigurationPage(layer, true); tester.startPage(page); // print(tester.getLastRenderedPage(), true, true, true); tester.executeAjaxEvent("publishedinfo:tabs:panel:theList:0:content:referencingForm:computeLatLon", "onclick"); // print(tester.getLastRenderedPage(), true, true, true); // we used to have error messages tester.assertNoErrorMessage(); Component llbox = tester.getComponentFromLastRenderedPage("publishedinfo:tabs:panel:theList:0:content:referencingForm:latLonBoundingBox"); ReferencedEnvelope re = (ReferencedEnvelope) llbox.getDefaultModelObject(); assertEquals(-93, re.getMinX(), 0.1); assertEquals(4.5, re.getMinY(), 0.1); assertEquals(-93, re.getMaxX(), 0.1); assertEquals(4.5, re.getMaxY(), 0.1); } }