Package org.geoserver.python

Source Code of org.geoserver.python.PythonCatalogModTest

package org.geoserver.python;

import java.sql.SQLException;

import org.geoserver.catalog.Catalog;
import org.geoserver.catalog.DataStoreInfo;
import org.geoserver.catalog.FeatureTypeInfo;
import org.geoserver.catalog.NamespaceInfo;
import org.geoserver.catalog.impl.CatalogImpl;
import org.geoserver.platform.GeoServerExtensions;
import org.geotools.data.DataStore;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.h2.tools.DeleteDbFiles;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.opengis.feature.simple.SimpleFeatureType;
import org.opengis.feature.type.FeatureType;
import org.springframework.context.ApplicationContext;

import static org.easymock.EasyMock.createNiceMock;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;

public class PythonCatalogModTest extends PythonTestSupport {

    Catalog cat;
   
    @Before
    public void setUp() throws Exception {
        DeleteDbFiles.execute("target", "bar", false);
       
        cat = new CatalogImpl();
       
        ApplicationContext context = createNiceMock(ApplicationContext.class);
        expect(context.getBean("catalog")).andReturn(cat).anyTimes();
        replay(context);
       
        new GeoServerExtensions().setApplicationContext(context);
    }
   
    @After
    public void tearDown() throws Exception {
        new GeoServerExtensions().setApplicationContext(null);
        DeleteDbFiles.execute("target", "bar", false);
    }
   
    @Test
    public void testAddWorkspace() {
        assertEquals(0, cat.getWorkspaces().size());
       
        pi.exec("from geoserver.catalog import Workspace");
        pi.exec("ws = Workspace('foo')");
        pi.exec("ws.save()");
       
        assertEquals(1, cat.getWorkspaces().size());
        assertNotNull(cat.getWorkspaceByName("foo"));
    }
   
    @Test
    public void testSaveWorkspace() {
        testAddWorkspace();
       
        assertNotNull(cat.getWorkspaceByName("foo"));
       
        pi.exec("from geoserver.catalog import Workspace");
        pi.exec("ws = Workspace('foo')");
        pi.exec("ws.name = 'bar'");
        pi.exec("ws.save()");
 
        assertNull(cat.getWorkspaceByName("foo"));
        assertNotNull(cat.getWorkspaceByName("bar"));
    }
  
    @Test
    public void testAddStore() throws Exception {
        testAddWorkspace();
       
        assertNull(cat.getDataStoreByName("foo", "bar"));
     
        pi.exec("from geoserver.catalog import Store");
        pi.exec("st = Store('bar')");
        pi.exec("st.connectionParameters.putAll({'database':'target/bar', 'dbtype': 'h2'})");
        pi.exec("st.save()");
       
        DataStoreInfo ds = cat.getDataStoreByName("foo", "bar");
        assertNotNull(ds);
        assertNotNull(ds.getDataStore(null));
    }
   
    @Test
    public void testAddStoreNonDefaultWorkspace() throws Exception {
        testAddWorkspace();
       
        assertNull(cat.getDataStoreByName("acme", "bar"));
       
        pi.exec("from geoserver.catalog import Workspace, Store");
        pi.exec("ws = Workspace('acme')");
        pi.exec("ws.save()");
       
        pi.exec("st = Store('bar', ws)");
        pi.exec("st.connectionParameters.putAll({'database':'target/bar', 'dbtype': 'h2'})");
        pi.exec("st.save()");
       
        assertNotNull(cat.getDataStoreByName("acme", "bar"));
    }
   
    @Test
    public void testSaveStore() throws Exception {
        testAddStore();
       
        assertNull(cat.getDataStoreByName("foo", "bar").getDescription());
       
        pi.exec("from geoserver.catalog import Store");
        pi.exec("st = Store('bar', 'foo')");
        pi.exec("st.description = 'foobar'");
        pi.exec("st.save()");
       
        assertEquals("foobar", cat.getDataStoreByName("foo", "bar").getDescription());
    }
   
    @Test
    public void testAddFeatureType() throws Exception {
        testAddStore();
       
        NamespaceInfo ns = cat.getFactory().createNamespace();
        ns.setPrefix("foo");
        ns.setURI("http://foo.org");
        cat.add(ns);
       
        DataStoreInfo ds = cat.getDataStoreByName("foo", "bar");
       
        SimpleFeatureTypeBuilder tb = new SimpleFeatureTypeBuilder();
        tb.setName("baz");
        tb.add("x", Integer.class);
        tb.add("y", String.class);
        ((DataStore)ds.getDataStore(null)).createSchema(tb.buildFeatureType());
       
        assertNull(cat.getFeatureTypeByDataStore(ds, "baz"));
       
        pi.exec("from geoserver.catalog import Catalog");
        pi.exec("from geoserver.catalog import Layer");
        pi.exec("cat = Catalog()");
        pi.exec("st = cat['foo']['bar']");
        pi.exec("l = Layer('baz', st)");
        pi.exec("l.save()");
       
        FeatureTypeInfo ft = cat.getFeatureTypeByDataStore(ds, "baz");
       
        assertNotNull(ft);
        assertNotNull(ft.getFeatureType());
        assertNotNull(ft.getFeatureSource(null, null));
    }
   
    @Test
    public void testSaveFeatureType() throws Exception {
        testAddStore();
       
       
    }
}
TOP

Related Classes of org.geoserver.python.PythonCatalogModTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.