[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