[Commits] r2725 - sandbox/gxm/geoext/gxm/tests/lib

commits at geoext.org commits at geoext.org
Fri May 27 14:04:33 CEST 2011


Author: marcjansen
Date: 2011-05-27 14:04:33 +0200 (Fri, 27 May 2011)
New Revision: 2725

Modified:
   sandbox/gxm/geoext/gxm/tests/lib/Button.test.html
   sandbox/gxm/geoext/gxm/tests/lib/LayerList.test.html
   sandbox/gxm/geoext/gxm/tests/lib/SegmentedButton.test.html
Log:
  - added tests

Modified: sandbox/gxm/geoext/gxm/tests/lib/Button.test.html
===================================================================
--- sandbox/gxm/geoext/gxm/tests/lib/Button.test.html	2011-05-26 15:01:44 UTC (rev 2724)
+++ sandbox/gxm/geoext/gxm/tests/lib/Button.test.html	2011-05-27 12:04:33 UTC (rev 2725)
@@ -70,7 +70,7 @@
         t.ok(false, "Since the xtype is not registered, we cannot check whether it points to the right class");
     }
 }
-/*
+
 function test_triggerControlCalled(t){
     if (Ext.is.Phone) {
         t.plan(1);
@@ -127,8 +127,8 @@
         });
     }, 5);
 }
-*/
 
+
 function test_triggerAndHandler(t){
     t.plan(2);
     

Modified: sandbox/gxm/geoext/gxm/tests/lib/LayerList.test.html
===================================================================
--- sandbox/gxm/geoext/gxm/tests/lib/LayerList.test.html	2011-05-26 15:01:44 UTC (rev 2724)
+++ sandbox/gxm/geoext/gxm/tests/lib/LayerList.test.html	2011-05-27 12:04:33 UTC (rev 2725)
@@ -47,10 +47,158 @@
     } else {
         t.ok(false, "Since the xtype is not registered, we cannot check whether it points to the right class");
     }
+}
+
+function getMultiLayerMapPanel(){
+    var map = new OpenLayers.Map({
+        layers: [
+            new OpenLayers.Layer(null, {
+                visibility: true
+            }),
+            new OpenLayers.Layer(null, {
+                visibility: false
+            })
+        ],
+        allOverlays: true
+    });
+
+    var mappanel = new GXM.MapPanel({
+        map: map
+    });
+    return mappanel;
+}
+
+function test_basics(t) {
+    t.plan(8);
     
+    t.delay_call(1, function(){
+        var mappanel = getMultiLayerMapPanel();
+    
+        var layerlist = {
+            xtype: 'gxm_layerlist',
+            mapPanel: mappanel
+        };
+    
+        var myTabPanel = new Ext.TabPanel({
+            items: [mappanel, layerlist],
+            fullscreen: true
+        });
+        
+        
+        t.delay_call(1, function(){
+            myTabPanel.setActiveItem(1);
+            t.delay_call(1, function(){
+                var layerpanel = myTabPanel.items.get(1);
+                
+                // are we working with a store?
+                t.ok(layerpanel.getStore(), 'Layerpanel has a store');
+                
+                // are we working with a GXM.LayerStore ?
+                t.ok(layerpanel.getStore() instanceof GXM.data.LayerStore, 'Layerpanel is a GXM.LayerStore');
+                
+                // Does the store have the correct model?
+                t.eq(layerpanel.getStore().model.modelName, 'gxm_Layer', 'Layerpanel.store works on the gxm_Layer model');
+                
+                // compairing the count
+                t.eq(layerpanel.getStore().getCount(), mappanel.map.layers.length, 'store count and map.layers.length are the same');
+                
+                // compairing the managed layers by id:
+                t.eq(layerpanel.getStore().getAt(0).get('layer').id, mappanel.map.layers[0].id, 'managed entities are the same');
+                
+                // check the generated HTML:
+                var elem = layerpanel.el.dom;
+                var found = null;
+                var selector = "";
+                var dq = Ext.DomQuery;
+                var visibleLyrCnt = mappanel.map.getLayersBy('visibility', true).length;
+                var invisibleLyrCnt = mappanel.map.getLayersBy('visibility', false).length;
+                
+                selector = '.gxm-layer-item';
+                found = dq.select(selector, elem);
+                t.eq(found.length, mappanel.map.layers.length, 'for every layer (cnt = ' + mappanel.map.layers.length + ') we generate list-item-markup');
+                
+                selector = '.gxm-visible-layer-indicator';
+                found = dq.select(selector, elem);
+                t.eq(found.length, visibleLyrCnt, 'for every visible layer (cnt = ' + visibleLyrCnt + ') we generate correct markup');
+                                
+                selector = '.gxm-invisible-layer-indicator';
+                found = dq.select(selector, elem);
+                t.eq(found.length, invisibleLyrCnt, 'for every invisible layer (cnt = ' + invisibleLyrCnt + ') we generate correct markup');
+                
+            });
+        });
+    });
 }
 
+function test_updatingHtml(t){
+    t.delay_call(1, function(){
+        var mappanel = getMultiLayerMapPanel();
+        
+        var layerlist = {
+            xtype: 'gxm_layerlist',
+            mapPanel: mappanel
+        };
+    
+        var myTabPanel = new Ext.TabPanel({
+            items: [mappanel, layerlist],
+            fullscreen: true
+        });
+        
+        t.delay_call(1, function(){
+            myTabPanel.setActiveItem(1);
+            t.delay_call(1, function(){
+                t.plan(2 * mappanel.map.layers.length);
+                
+                var layerpanel = myTabPanel.items.get(1);
+                
+                var dq = Ext.DomQuery;
+                // get initial classes:
+                
+                var origClasses = [];
+                
+                var elem = layerpanel.el.dom;
+                var selector = '.gxm-layer-item';
+                var found = dq.select(selector, elem);
+                
+                Ext.each(found, function(li) {
+                    var p = li.parentNode;
+                    var liEl = Ext.get(p.firstChild); 
+                    
+                    var cssClass='';
+                    if (liEl.hasCls('gxm-visible-layer-indicator')) {
+                        cssClass = 'gxm-visible-layer-indicator';
+                    } else {
+                        cssClass = 'gxm-invisible-layer-indicator';
+                    }
+                    origClasses.push(cssClass);
+                });
+                
+                
+                Ext.each(mappanel.map.layers, function(layer) {
+                    layer.setVisibility(!layer.visibility);
+                });
+                t.delay_call(1, function(){
+                    selector = '.gxm-layer-item';
+                    found = dq.select(selector, elem);
+                    
+                    Ext.each(found, function(li, cnt) {
+                        // old class should not be there anymore
+                        var p = li.parentNode;
+                        var liEl = Ext.get(p.firstChild);             
+                        
+                        var origClass = origClasses[cnt];
+                        var expClass = ((origClass === 'gxm-visible-layer-indicator') ? 'gxm-invisible-layer-indicator' : 'gxm-visible-layer-indicator');
+                        
+                        t.eq(liEl.hasCls(origClass), false, 'old CSS class is gone after toggling of visibility');
+                        t.eq(liEl.hasCls(expClass), true, 'new CSS class is present after toggling of visibility');
+                    });
+                });
+            });
+        });
+    });
+}
 
+
         
         </script>
     </head>

Modified: sandbox/gxm/geoext/gxm/tests/lib/SegmentedButton.test.html
===================================================================
--- sandbox/gxm/geoext/gxm/tests/lib/SegmentedButton.test.html	2011-05-26 15:01:44 UTC (rev 2724)
+++ sandbox/gxm/geoext/gxm/tests/lib/SegmentedButton.test.html	2011-05-27 12:04:33 UTC (rev 2725)
@@ -80,11 +80,196 @@
     } else {
         t.ok(false, "Since the xtype is not registered, we cannot check whether it points to the right class");
     }
+}
+
+function test_exclusiveGroup(t) {
+    // whether we activation/deactivation works
+    t.plan(3);
     
+    t.delay_call(1, function(){    
+        var ctrls = [
+            new OpenLayers.Control(),
+            new OpenLayers.Control(),
+            new OpenLayers.Control()
+        ];
+        
+        var mappanel = getMapPanel();
+        
+        var btns = [];
+        
+        Ext.each(ctrls, function(ctrl, idx){
+            var btn = {
+                control: ctrl
+            };
+            btns.push(btn);
+        });
+        
+        var segBtn = new GXM.SegmentedButton({
+            map: mappanel.map,
+            exclusiveGroup: 'foo',
+            items: btns
+        });
+        
+        var myToolbar = new Ext.Toolbar({
+            dock: 'top',
+            title: 'My Toolbar',
+            items: [segBtn] 
+        });
+        
+        var myPanel = new Ext.Panel({
+            dockedItems: [myToolbar],
+            fullscreen: true,
+            items: [mappanel]
+        });
+        
+        t.delay_call(1, function(){
+            segBtn.items.get(0).onPress();
+            t.delay_call(1, function() {
+                t.eq(ctrls[0].active, true, 'ctrls[0].active == true');
+                
+                // press the second button:
+                segBtn.items.get(1).onPress();
+                t.delay_call(1, function() {
+                    t.eq(ctrls[0].active, false, 'ctrls[0].active == false'); 
+                    t.eq(ctrls[1].active, true, 'ctrls[0].active == true');               
+                });
+            });
+        });
+    });
 }
 
+function test_autoExclusiveGroup(t) {
+    t.delay_call(1, function(){    
+        var ctrls = [
+            new OpenLayers.Control(),
+            new OpenLayers.Control(),
+            new OpenLayers.Control()
+        ];
+        
+        var mappanel = getMapPanel();
+        
+        var btns = [];
+        
+        Ext.each(ctrls, function(ctrl, idx){
+            var btn = {
+                control: ctrl
+            };
+            btns.push(btn);
+        });
+        
+        var segBtn = new GXM.SegmentedButton({
+            map: mappanel.map,
+            items: btns
+        });
+        
+        var myToolbar = new Ext.Toolbar({
+            dock: 'top',
+            title: 'My Toolbar',
+            items: [segBtn] 
+        });
+        
+        var myPanel = new Ext.Panel({
+            dockedItems: [myToolbar],
+            fullscreen: true,
+            items: [mappanel]
+        });
+        
+        var planCnt = 0;
+        // whether we autoassign to the segBtn
+        planCnt += 1; 
+        // check whether we have the same group for every btn, 2 tests each
+        planCnt += (segBtn.items.length * 2); 
+        // whether we activation/deactivation works
+        planCnt += 3;
+        t.plan(planCnt);
+        
+        t.delay_call(1, function(){
+            
+            // the segBtn and all children should get the same exclusive group:
+            var segBtnExclusiveGroup = segBtn.exclusiveGroup;
+            t.ok(segBtnExclusiveGroup, 'autoassigned exclusiveGroup');
+            
+            // check whether we have the same group for every btn
+            segBtn.items.each(function(btn){
+                t.ok(btn.exclusiveGroup, 'btn got an exclusiveGroup');
+                t.eq(segBtnExclusiveGroup, btn.exclusiveGroup, 'exclusiveGroups match');
+            });
+            
+            // whether we activation/deactivation works
+            segBtn.items.get(0).onPress();
+            t.delay_call(1, function() {
+                t.eq(ctrls[0].active, true, 'ctrls[0].active == true');
+                
+                // press the second button:
+                segBtn.items.get(1).onPress();
+                t.delay_call(1, function() {
+                    t.eq(ctrls[0].active, false, 'ctrls[0].active == false'); 
+                    t.eq(ctrls[1].active, true, 'ctrls[0].active == true');               
+                });
+            });
+        });
+    });
+}
 
+function test_allowMultipleGroup(t) {
+    // whether we activation/deactivation works
+    t.plan(3);
+    
+    t.delay_call(1, function(){    
+        var ctrls = [
+            new OpenLayers.Control(),
+            new OpenLayers.Control(),
+            new OpenLayers.Control()
+        ];
         
+        var mappanel = getMapPanel();
+        
+        var btns = [];
+        
+        Ext.each(ctrls, function(ctrl, idx){
+            var btn = {
+                control: ctrl
+            };
+            btns.push(btn);
+        });
+        
+        var segBtn = new GXM.SegmentedButton({
+            map: mappanel.map,
+            allowMultiple: true,
+            items: btns
+        });
+        
+        var myToolbar = new Ext.Toolbar({
+            dock: 'top',
+            title: 'My Toolbar',
+            items: [segBtn] 
+        });
+        
+        var myPanel = new Ext.Panel({
+            dockedItems: [myToolbar],
+            fullscreen: true,
+            items: [mappanel]
+        });
+        
+        t.delay_call(1, function(){
+            segBtn.items.get(0).onPress();
+            t.delay_call(1, function() {
+                t.eq(ctrls[0].active, true, 'ctrls[0].active == true');
+                
+                // press the second button:
+                segBtn.items.get(1).onPress();
+                t.delay_call(1, function() {
+                    t.eq(ctrls[0].active, true, 'ctrls[0].active == true'); 
+                    t.eq(ctrls[1].active, true, 'ctrls[0].active == true');               
+                });
+            });
+        });
+    });
+}
+
+
+
+        
         </script>
     </head>
     <body></body>



More information about the Commits mailing list