Ticket #157: patch-157_r1358-A0.diff
| File patch-157_r1358-A0.diff, 5.0 kB (added by bbinet, 1 year ago) |
|---|
-
lib/GeoExt/data/WMSCapabilitiesReader.js
old new 37 37 if(!(typeof recordType === "function")) { 38 38 recordType = GeoExt.data.LayerRecord.create( 39 39 recordType || meta.fields || [ 40 {name: "name", type: "string"},41 40 {name: "abstract", type: "string"}, 42 41 {name: "queryable", type: "boolean"}, 43 42 {name: "formats"}, … … 97 96 if(typeof data === "string" || data.nodeType) { 98 97 data = this.meta.format.read(data); 99 98 } 100 var url = data.capability.request.getmap.href; 101 var records = [], layer; 99 var url = (data && 100 data.capability && 101 data.capability.request && 102 data.capability.request.getmap) ? 103 data.capability.request.getmap.href : undefined; 104 var layers = (data && data.capability) ? data.capability.layers : undefined; 105 var records = []; 102 106 103 for(var i=0, len=data.capability.layers.length; i<len; i++){ 104 layer = data.capability.layers[i]; 105 106 if(layer.name) { 107 records.push(new this.recordType(Ext.apply(layer, { 108 layer: new OpenLayers.Layer.WMS( 107 if(url && layers) { 108 var recordType = this.recordType, fields = recordType.prototype.fields; 109 var i, lenI, j, lenJ, layer, values, field, v; 110 for (i = 0, lenI = layers.length; i < lenI; i++) { 111 layer = layers[i]; 112 if(layer.name) { 113 values = {}; 114 for(j = 0, lenJ = fields.length; j < lenJ; j++){ 115 field = fields.items[j]; 116 v = layer[field.mapping || field.name] || 117 field.defaultValue; 118 v = field.convert(v); 119 values[field.name] = v; 120 } 121 values.layer = new OpenLayers.Layer.WMS( 109 122 layer.title || layer.name, 110 123 url, 111 124 {layers: layer.name}, { … … 113 126 this.attributionMarkup(layer.attribution) : 114 127 undefined 115 128 } 116 ) 117 }))); 129 ); 130 records.push(new this.recordType(values)); 131 } 118 132 } 119 133 } 120 134 121 135 return { 122 136 totalRecords: records.length, 123 137 success: true, -
tests/lib/GeoExt/data/WMSCapabilitiesReader.html
old new 17 17 var fields = reader.recordType.prototype.fields; 18 18 19 19 // 1 test 20 t.eq(fields.items.length, 1 4, 'number of default items is correct');20 t.eq(fields.items.length, 13, 'number of default items is correct'); 21 21 22 22 23 23 var reader = new GeoExt.data.WMSCapabilitiesReader({},[ … … 33 33 'field values set from configuration are correct'); 34 34 } 35 35 function test_read(t) { 36 t.plan(1 6);36 t.plan(18); 37 37 38 var reader = new GeoExt.data.WMSCapabilitiesReader();38 // test a reader with the only two default LayerRecord fields 39 39 40 var reader = new GeoExt.data.WMSCapabilitiesReader({},{}); 40 41 var records = reader.read({responseXML : doc}); 41 42 42 43 //1 test 43 44 t.eq(records.totalRecords, 22, 'readRecords returns correct number of records'); 45 var record = records.records[2]; 46 //2 tests -- testing the fields of a record 47 t.eq(record.get("title"), "tiger:tiger_roads", "correct layer title"); 48 t.eq(record.get("abstract"), undefined, "correct undefined abstract which is not part of fields"); 49 50 51 // test a reader with all default fields 52 53 var reader = new GeoExt.data.WMSCapabilitiesReader(); 54 var records = reader.read({responseXML : doc}); 55 56 //1 test 57 t.eq(records.totalRecords, 22, 'readRecords returns correct number of records'); 44 58 45 59 var record = records.records[2]; 46 60 47 61 //8 tests -- testing the fields of a record 48 t.eq(record.get("name"), "tiger:tiger_roads", "[2] correct layer name"); 49 t.eq(record.get("title"), "Manhattan (NY) roads", "[2] correct layer title"); 62 t.eq(record.get("title"), "tiger:tiger_roads", "[2] correct layer title"); 50 63 t.eq( 51 64 record.get("abstract"), 52 65 "Highly simplified road layout of Manhattan in New York..",