/* (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.*;
import java.util.Arrays;
import org.geoserver.catalog.DataStoreInfo;
import org.geoserver.catalog.FeatureTypeInfo;
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.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());
}
}