Look for attribute names in both SimpleData and Placemark
See http://trac.osgeo.org/gdal/ticket/5208
This commit is contained in:
parent
f7bee2345d
commit
e4371f83bc
@ -30,6 +30,38 @@ var checkDecimals = function(x, dec_sep){
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check if an attribute is in the KML output
|
||||||
|
//
|
||||||
|
// NOTE: "name" attribute is threated specially in that
|
||||||
|
// it's matched in case-insensitive way
|
||||||
|
//
|
||||||
|
var hasAttribute = function(kml, att) {
|
||||||
|
|
||||||
|
// Strip namespace:
|
||||||
|
//https://github.com/polotek/libxmljs/issues/212
|
||||||
|
kml = kml.replace(/ xmlns=[^>]*>/, '>');
|
||||||
|
|
||||||
|
var doc = libxmljs.parseXmlString(kml);
|
||||||
|
//console.log("doc: " + doc);
|
||||||
|
var xpath;
|
||||||
|
|
||||||
|
xpath = "//SimpleField[@name='" + att + "']";
|
||||||
|
if ( doc.get(xpath) ) return true;
|
||||||
|
|
||||||
|
xpath = "//Placemark/" + att;
|
||||||
|
if ( doc.get(xpath) ) return true;
|
||||||
|
|
||||||
|
var lcatt = att.toLowerCase();
|
||||||
|
if ( lcatt == 'name' ) {
|
||||||
|
xpath = "//Placemark/" + lcatt;
|
||||||
|
if ( doc.get(xpath) ) return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//if ( lowerkml.indexOf('simplefield name="'+ loweratt + '"') != -1 ) return true;
|
||||||
|
//if ( lowerkml.indexOf('<'+loweratt+'>') != -1 ) return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// KML tests
|
// KML tests
|
||||||
|
|
||||||
test('KML format, unauthenticated', function(done){
|
test('KML format, unauthenticated', function(done){
|
||||||
@ -46,9 +78,9 @@ test('KML format, unauthenticated', function(done){
|
|||||||
var checkfields = {'Name':1, 'address':1, 'cartodb_id':1, 'the_geom':0, 'the_geom_webmercator':0};
|
var checkfields = {'Name':1, 'address':1, 'cartodb_id':1, 'the_geom':0, 'the_geom_webmercator':0};
|
||||||
for ( var f in checkfields ) {
|
for ( var f in checkfields ) {
|
||||||
if ( checkfields[f] ) {
|
if ( checkfields[f] ) {
|
||||||
assert.ok(row0.indexOf('SimpleField name="'+ f + '"') != -1, "result does not include '" + f + "'");
|
assert.ok(hasAttribute(row0, f), "result does not include '" + f + "': " + row0);
|
||||||
} else {
|
} else {
|
||||||
assert.ok(row0.indexOf('SimpleField name="'+ f + '"') == -1, "result includes '" + f + "'");
|
assert.ok(!hasAttribute(row0, f), "result includes '" + f + "'");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
done();
|
done();
|
||||||
@ -103,9 +135,9 @@ test('KML format, skipfields', function(done){
|
|||||||
var checkfields = {'Name':1, 'address':0, 'cartodb_id':0, 'the_geom':0, 'the_geom_webmercator':0};
|
var checkfields = {'Name':1, 'address':0, 'cartodb_id':0, 'the_geom':0, 'the_geom_webmercator':0};
|
||||||
for ( var f in checkfields ) {
|
for ( var f in checkfields ) {
|
||||||
if ( checkfields[f] ) {
|
if ( checkfields[f] ) {
|
||||||
assert.ok(row0.indexOf('SimpleField name="'+ f + '"') != -1, "result does not include '" + f + "'");
|
assert.ok(hasAttribute(row0, f), "result does not include '" + f + "': " + row0);
|
||||||
} else {
|
} else {
|
||||||
assert.ok(row0.indexOf('SimpleField name="'+ f + '"') == -1, "result includes '" + f + "'");
|
assert.ok(!hasAttribute(row0, f), "result includes '" + f + "'");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
done();
|
done();
|
||||||
|
Loading…
Reference in New Issue
Block a user