/* (c) 2014 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.test;
import org.junit.Test;
import org.w3c.dom.Document;
/**
* Tests whether not specifying idExpression (using primary keys by default) works.
*
* @author Rini Angreani (CSIRO Earth Science and Resource Engineering)
*
*/
public class DefaultIdTest extends AbstractAppSchemaTestSupport {
private static String ID_PREFIX;
@Override
protected DefaultIdMockData createTestData() {
// generated id prefix depends on the backend
ID_PREFIX = "";
if (System.getProperty("testDatabase") != null) {
// when run online, gml:id is prefixed with table name
ID_PREFIX = "MAPPEDFEATURENOID.";
}
return new DefaultIdMockData();
}
/**
* Test GetFeature.
*/
@Test
public void testGetFeature() {
Document doc = getAsDOM("wfs?service=WFS&version=1.1.0&request=GetFeature&typeName=gsml:MappedFeature");
LOGGER.info("wfs?service=WFS&version=1.1.0&request=GetFeature&typeName=gsml:MappedFeature Response:\n"
+ prettyString(doc));
assertXpathCount(4, "//gsml:MappedFeature", doc);
assertXpathCount(1, "//gsml:MappedFeature[@gml:id='" + ID_PREFIX + "1']", doc);
assertXpathCount(1, "//gsml:MappedFeature[@gml:id='" + ID_PREFIX
+ "1']/gsml:specification/gsml:GeologicUnit", doc);
assertXpathEvaluatesTo("gu.25699", "//gsml:MappedFeature[@gml:id='" + ID_PREFIX
+ "1']/gsml:specification/gsml:GeologicUnit/@gml:id", doc);
assertXpathCount(1, "//gsml:MappedFeature[@gml:id='" + ID_PREFIX + "2']", doc);
assertXpathCount(1, "//gsml:MappedFeature[@gml:id='" + ID_PREFIX
+ "2']/gsml:specification/gsml:GeologicUnit", doc);
assertXpathEvaluatesTo("gu.25678", "//gsml:MappedFeature[@gml:id='" + ID_PREFIX
+ "2']/gsml:specification/gsml:GeologicUnit/@gml:id", doc);
assertXpathCount(1, "//gsml:MappedFeature[@gml:id='" + ID_PREFIX + "3']", doc);
assertXpathCount(1,
"//gsml:MappedFeature[@gml:id='" + ID_PREFIX + "3']/gsml:specification", doc);
assertXpathEvaluatesTo("#gu.25678", "//gsml:MappedFeature[@gml:id='" + ID_PREFIX
+ "3']/gsml:specification/@xlink:href", doc);
assertXpathCount(1, "//gsml:MappedFeature[@gml:id='" + ID_PREFIX + "4']", doc);
assertXpathCount(1, "//gsml:MappedFeature[@gml:id='" + ID_PREFIX
+ "4']/gsml:specification/gsml:GeologicUnit", doc);
assertXpathEvaluatesTo("gu.25682", "//gsml:MappedFeature[@gml:id='" + ID_PREFIX
+ "4']/gsml:specification/gsml:GeologicUnit/@gml:id", doc);
}
/**
* Test GetFeature with filters.
*/
@Test
public void testGetFeatureWithFilter() {
Document doc = getAsDOM("wfs?service=WFS&version=1.1.0&request=GetFeature&typename=gsml:MappedFeature&BBOX=-35,96,-12,118");
LOGGER.info("wfs?service=WFS&version=1.1.0&request=GetFeature&typename=gsml:MappedFeature&BBOX=-35,96,-12,118 response:\n"
+ prettyString(doc));
assertXpathCount(2, "//gsml:MappedFeature", doc);
assertXpathCount(1, "//gsml:MappedFeature[@gml:id='" + ID_PREFIX + "3']", doc);
assertXpathCount(1, "//gsml:MappedFeature[@gml:id='" + ID_PREFIX
+ "3']/gsml:specification/gsml:GeologicUnit", doc);
assertXpathEvaluatesTo("gu.25678", "//gsml:MappedFeature[@gml:id='" + ID_PREFIX
+ "3']/gsml:specification/gsml:GeologicUnit/@gml:id", doc);
assertXpathCount(1, "//gsml:MappedFeature[@gml:id='" + ID_PREFIX + "4']", doc);
assertXpathCount(1, "//gsml:MappedFeature[@gml:id='" + ID_PREFIX
+ "4']/gsml:specification/gsml:GeologicUnit", doc);
assertXpathEvaluatesTo("gu.25682", "//gsml:MappedFeature[@gml:id='" + ID_PREFIX
+ "4']/gsml:specification/gsml:GeologicUnit/@gml:id", doc);
}
}