Ticket #40: records.patch

File records.patch, 3.7 kB (added by sbenthall, 1 year ago)

now with regression tests

  • tests/lib/GeoExt/data/FeatureRecord.html

    old new  
    1010    <script type="text/javascript"> 
    1111        
    1212        function test_featurerecord(t) { 
    13             t.plan(14); 
     13            t.plan(15); 
    1414 
    1515            var c, feature, record; 
    1616             
     
    3636                 "\"create(o)\" returns a func with a \"extra1\" field in its prototype");  
    3737            t.eq(c.prototype.fields.items[4].name, "extra2", 
    3838                 "\"create(o)\" returns a func with a \"extra2\" field in its prototype");  
     39            t.eq(GeoExt.data.FeatureRecord.prototype.fields.items.length, 3, "create() method does not modify class prototype's fields"); 
     40         
    3941 
    4042            feature = new OpenLayers.Feature(); 
    4143            record = new c({feature: feature, state: feature.state, fid: feature.fid}, feature.id); 
  • tests/lib/GeoExt/data/LayerRecord.html

    old new  
    99    <script type="text/javascript"> 
    1010        
    1111        function test_layerrecord(t) { 
    12             t.plan(12); 
     12            t.plan(13); 
    1313 
    1414            var c, layer, record; 
    1515             
     
    3131                 "\"create(o)\" returns a func with a \"extra1\" field in its prototype");  
    3232            t.eq(c.prototype.fields.items[3].name, "extra2", 
    3333                 "\"create(o)\" returns a func with a \"extra2\" field in its prototype");  
     34            t.eq(GeoExt.data.LayerRecord.prototype.fields.items.length, 2, "create() method does not modify class prototype's fields"); 
    3435 
     36 
    3537            layer = new OpenLayers.Layer(); 
    3638            record = new c({layer: layer, title: layer.name}, layer.id); 
    3739            t.ok(record instanceof GeoExt.data.LayerRecord, "create returns a constructor (LayerRecord)"); 
  • lib/GeoExt/data/FeatureRecord.js

    old new  
    5555GeoExt.data.FeatureRecord.create = function(o) { 
    5656    var f = Ext.extend(GeoExt.data.FeatureRecord, {}); 
    5757    var p = f.prototype; 
    58     if(o) { 
     58 
     59    var oldFields = p.fields;     
     60    p.fields = new Ext.util.MixedCollection(false, function(field){ 
     61        return field.name; 
     62    }); 
     63 
     64    oldFields.each(function(field){ 
     65        p.fields.add(field); 
     66    }); 
     67 
     68    if(o){ 
    5969        for(var i = 0, len = o.length; i < len; i++){ 
    6070            p.fields.add(new Ext.data.Field(o[i])); 
    6171        } 
    6272    } 
     73 
     74    f.getField = function(name){ 
     75        return p.fields.get(name); 
     76    }; 
     77 
    6378    return f; 
    6479}; 
  • lib/GeoExt/data/LayerRecord.js

    old new  
    6363GeoExt.data.LayerRecord.create = function(o) { 
    6464    var f = Ext.extend(GeoExt.data.LayerRecord, {}); 
    6565    var p = f.prototype; 
    66     if(o) { 
     66 
     67    var oldFields = p.fields;     
     68    p.fields = new Ext.util.MixedCollection(false, function(field){ 
     69        return field.name; 
     70    }); 
     71 
     72    oldFields.each(function(field){ 
     73        p.fields.add(field); 
     74    }); 
     75 
     76    if(o){ 
    6777        for(var i = 0, len = o.length; i < len; i++){ 
    6878            p.fields.add(new Ext.data.Field(o[i])); 
    6979        } 
    7080    } 
     81 
     82    f.getField = function(name){ 
     83        return p.fields.get(name); 
     84    }; 
     85 
    7186    return f; 
    7287};