[Commits] r2702 - in sandbox/mapgears/geoext.ux/ux/WFSTFeatureEditing: lib/GeoExt.ux/widgets tests/lib/GeoExt.ux/widgets

commits at geoext.org commits at geoext.org
Tue May 17 19:55:09 CEST 2011


Author: adube
Date: 2011-05-17 19:55:09 +0200 (Tue, 17 May 2011)
New Revision: 2702

Modified:
   sandbox/mapgears/geoext.ux/ux/WFSTFeatureEditing/lib/GeoExt.ux/widgets/WFSTFeatureEditingManager.js
   sandbox/mapgears/geoext.ux/ux/WFSTFeatureEditing/tests/lib/GeoExt.ux/widgets/WFSTFeatureEditingManager.html
Log:
WFSTFeatureEditing - manager - more tests and DescFeatType triggered from new method instead of being part of a callback method

Modified: sandbox/mapgears/geoext.ux/ux/WFSTFeatureEditing/lib/GeoExt.ux/widgets/WFSTFeatureEditingManager.js
===================================================================
--- sandbox/mapgears/geoext.ux/ux/WFSTFeatureEditing/lib/GeoExt.ux/widgets/WFSTFeatureEditingManager.js	2011-05-17 15:36:50 UTC (rev 2701)
+++ sandbox/mapgears/geoext.ux/ux/WFSTFeatureEditing/lib/GeoExt.ux/widgets/WFSTFeatureEditingManager.js	2011-05-17 17:55:09 UTC (rev 2702)
@@ -392,9 +392,10 @@
      *          the layer so that it can access any of its widget directly from
      *          itself.
      *        - it is added to the :class:`OpenLayers.Map`
-     *        - a WFSDescribeFeatureType is triggered
      *        - try to get a WMS layer sibling in order to refresh it when
      *          transactions are made to the vector one.
+     *
+     *      When finished, the 'triggerDescribeFeatureTypes' method is called.
      */
     onWFSCapabilitiesStoreLoad: function(store, records, options) {
         var layers = [];
@@ -427,6 +428,20 @@
         this.map.addLayers(layers);
         this.layers = layers;
 
+        this.triggerDescribeFeatureTypes(layers);
+    },
+
+    /** private: method[triggerDescribeFeatureTypes]
+     *  :param layers ``Array`` of :class:`OpenLayers.Layer.Vector`.  Defaults
+     *                          to the layers property of this object.
+     *
+     *  For each layers, a WFSDescribeFeatureType is triggered with the
+     *      "onDescribeFeatureTypeSuccess" callback using the layer protocol
+     *      'featureType' property as the 'TYPENAME' parameter.
+     */
+    triggerDescribeFeatureTypes: function(layers) {
+        layers = layers || this.layers;
+        alert(1);
         Ext.each(layers, function(layer, index) {
             var params = Ext.applyIf(Ext.applyIf(
                 this.describeFeatureTypeParams || {},

Modified: sandbox/mapgears/geoext.ux/ux/WFSTFeatureEditing/tests/lib/GeoExt.ux/widgets/WFSTFeatureEditingManager.html
===================================================================
--- sandbox/mapgears/geoext.ux/ux/WFSTFeatureEditing/tests/lib/GeoExt.ux/widgets/WFSTFeatureEditingManager.html	2011-05-17 15:36:50 UTC (rev 2701)
+++ sandbox/mapgears/geoext.ux/ux/WFSTFeatureEditing/tests/lib/GeoExt.ux/widgets/WFSTFeatureEditingManager.html	2011-05-17 17:55:09 UTC (rev 2702)
@@ -159,12 +159,91 @@
         manager.un("commitfail", callback);
     }
 
-    function test_WFSTFeatureEditingManager_WFSCapabilitiesStore(t) {
-        t.plan(0);
+    function test_WFSTFeatureEditingManager_onWFSCapabilitiesStoreLoad(t) {
+        t.plan(5);
+
+        var manager, log, layer;
+
+        // (4) testing onWFSCapabilitiesStoreLoad method called and records
+        //     returned
+        GeoExt.ux.WFSTFeatureEditingManager.prototype.onWFSCapabilitiesStoreLoad = function(store, records, options) {
+            t.ok(true, "onWFSCapabilitiesStoreLoad callback method called once");
+            t.eq(records.length, 2, "Two records are in the store.");
+
+            log = true;
+            Ext.each(records, function(record, index) {
+                if (!(record.getLayer() instanceof OpenLayers.Layer.Vector)) {
+                    log = false;
+                    return false;
+                }
+            });
+            t.ok(log, "All records contain an OpenLayers.Layer.Vector layer.");
+
+            log = false;
+            layer = records[0].getLayer();
+            Ext.each(layer.strategies, function(strategy, strategyIndex) {
+                if (strategy instanceof OpenLayers.Strategy.Save &&
+                    strategy.layer === layer)
+                {
+                    log = true;
+                    return false;
+                }
+            });
+            t.ok(log, "vector layers have a OpenLayers.Strategy.Save instance correctly set.");
+        };
+
+        manager = new GeoExt.ux.WFSTFeatureEditingManager({
+            "map": getNewMap(),
+            "toolbar": getNewToolbar(),
+            "mainPanelContainer": getNewMainPanelContainer(),
+            "url": "../../../../../../../geoext/examples/data/wfscap_tiny_100.xml"
+        });
+
+        // (1) delay call to let store 'load' callback method to be fired
+        t.delay_call(2, function() { 
+            t.ok(true, "waited for 2s"); 
+        });
     }
+
+    function test_WFSTFeatureEditingManager_afterWFSCapabilitiesStoreLoad(t) {
+        t.plan(7);
+
+        var manager, log, layer;
+
+        // (6) testing layers created after onWFSCapabilitiesStoreLoad method
+        //     called (triggerDescribeFeatureTypes method)
+        GeoExt.ux.WFSTFeatureEditingManager.prototype.triggerDescribeFeatureTypes = function() {
+            t.ok(true, "triggerDescribeFeatureTypes method called.");
+            t.eq(manager.layers.length, 2, "Two layers were added to layers property");
+
+            layer = manager.layers[0];
+            t.ok(layer.wfstFeatureEditing, "Layer 'wfstFeatureEditing' property correclty set.");
+
+            log = (manager === layer.wfstFeatureEditing.manager);
+            t.ok(log, "Layer has a reference to the manager.");
+
+            log = (layer.wfstFeatureEditing.saveStrategy instanceof OpenLayers.Strategy.Save);
+            t.ok(log, "Layer has a reference to its save strategy.");
+
+            log = (layer.map instanceof OpenLayers.Map);
+            t.ok(log, "Layers were added to the map");
+        };
+
+        manager = new GeoExt.ux.WFSTFeatureEditingManager({
+            "map": getNewMap(),
+            "toolbar": getNewToolbar(),
+            "mainPanelContainer": getNewMainPanelContainer(),
+            "url": "../../../../../../../geoext/examples/data/wfscap_tiny_100.xml"
+        });
+
+        // (1) delay call to let store 'load' callback method to be fired
+        t.delay_call(2, function() { 
+            t.ok(true, "waited for 2s"); 
+        });
+    }
     </script>
   <body>
-    <div id="map"></div>
+    <div id="map" style="width: 200px; height: 200px;"></div>
     <div id="panel"></div>
   </body>
-</html>
\ No newline at end of file
+</html>



More information about the Commits mailing list