package org.geoserver.web.data.layer;
import java.util.Arrays;
import junit.framework.Test;
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;
public class NewLayerPageTest extends GeoServerWicketTestSupport {
private static final String TABLE_PATH = "selectLayersContainer:selectLayers:layers";
/**
* This is a READ ONLY TEST so we can use one time setup
*/
public static Test suite() {
return new OneTimeTestSetup(new NewLayerPageTest());
}
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());
}
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", "onchange");
// 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", "onchange");
// now it should be there
assertNull(tester.getComponentFromLastRenderedPage("selectLayersContainer:selectLayers"));
}
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());
}
}