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  
    3737    if(!(typeof recordType === "function")) { 
    3838        recordType = GeoExt.data.LayerRecord.create( 
    3939            recordType || meta.fields || [ 
    40                 {name: "name", type: "string"}, 
    4140                {name: "abstract", type: "string"}, 
    4241                {name: "queryable", type: "boolean"}, 
    4342                {name: "formats"}, 
     
    9796        if(typeof data === "string" || data.nodeType) { 
    9897            data = this.meta.format.read(data); 
    9998        } 
    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 = []; 
    102106 
    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( 
    109122                        layer.title || layer.name, 
    110123                        url, 
    111124                        {layers: layer.name}, { 
     
    113126                                this.attributionMarkup(layer.attribution) : 
    114127                                undefined 
    115128                        } 
    116                     ) 
    117                 }))); 
     129                    ); 
     130                    records.push(new this.recordType(values)); 
     131                } 
    118132            } 
    119133        } 
    120          
     134 
    121135        return { 
    122136            totalRecords: records.length, 
    123137            success: true, 
  • tests/lib/GeoExt/data/WMSCapabilitiesReader.html

    old new  
    1717            var fields = reader.recordType.prototype.fields; 
    1818 
    1919            // 1 test 
    20             t.eq(fields.items.length, 14, 'number of default items is correct'); 
     20            t.eq(fields.items.length, 13, 'number of default items is correct'); 
    2121 
    2222 
    2323            var reader = new GeoExt.data.WMSCapabilitiesReader({},[ 
     
    3333                 'field values set from configuration are correct'); 
    3434        } 
    3535        function test_read(t) { 
    36             t.plan(16); 
     36            t.plan(18); 
    3737 
    38             var reader = new GeoExt.data.WMSCapabilitiesReader(); 
     38            // test a reader with the only two default LayerRecord fields 
    3939 
     40            var reader = new GeoExt.data.WMSCapabilitiesReader({},{}); 
    4041            var records = reader.read({responseXML : doc}); 
    4142 
    4243            //1 test 
    4344            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'); 
    4458             
    4559            var record = records.records[2]; 
    4660 
    4761            //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"); 
    5063            t.eq( 
    5164                record.get("abstract"), 
    5265               "Highly simplified road layout of Manhattan in New York..",