diff options
| author | mensonge <mensonge@b3834d28-1941-0410-a4f8-b48e95affb8f> | 2008-11-13 09:49:11 +0000 | 
|---|---|---|
| committer | mensonge <mensonge@b3834d28-1941-0410-a4f8-b48e95affb8f> | 2008-11-13 09:49:11 +0000 | 
| commit | e44a7e37b6c7b5961adaffc62b9042b8d442938e (patch) | |
| tree | 95b67c356e93163467db2451f2b8cce84ed5d582 /includes/js/dijit/tests/layout/ContentPane.html | |
| parent | a62b9742ee5e28bcec6872d88f50f25b820914f6 (diff) | |
| download | semanticscuttle-e44a7e37b6c7b5961adaffc62b9042b8d442938e.tar.gz semanticscuttle-e44a7e37b6c7b5961adaffc62b9042b8d442938e.tar.bz2 | |
New feature: basic Ajax suggestion for tags and implementation of Dojo toolkit
git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@151 b3834d28-1941-0410-a4f8-b48e95affb8f
Diffstat (limited to 'includes/js/dijit/tests/layout/ContentPane.html')
| -rw-r--r-- | includes/js/dijit/tests/layout/ContentPane.html | 577 | 
1 files changed, 577 insertions, 0 deletions
| diff --git a/includes/js/dijit/tests/layout/ContentPane.html b/includes/js/dijit/tests/layout/ContentPane.html new file mode 100644 index 0000000..8853a3e --- /dev/null +++ b/includes/js/dijit/tests/layout/ContentPane.html @@ -0,0 +1,577 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" +		"http://www.w3.org/TR/html4/strict.dtd"> +<html> +<head> +	<title>Test ContentPane</title> +	<style type="text/css"> +		@import "../../../dojo/resources/dojo.css"; +		@import "../../themes/tundra/tundra.css"; +		@import "../css/dijitTests.css"; + +		.box { +			border: 1px solid black; +			padding: 8px; +		} + +		.dijitTestWidget { +			border: 1px dashed red; +			background-color: #C0E209 ; +		} +	</style> + +	<script type="text/javascript" src="../../../dojo/dojo.js" +		djConfig="isDebug: true"></script> +	<script type="text/javascript"> +		dojo.require("doh.runner"); +		dojo.require("dijit.layout.ContentPane"); +		dojo.require("dijit._Container"); +		dojo.require("dijit._Templated"); +		dojo.require("dijit.layout.StackContainer"); + +		// create a do nothing, only for test widget +		dojo.declare("dijit.TestWidget", +			[dijit._Widget, dijit._Templated], { +			templateString: "<span class='dijitTestWidget'></span>" +		}); + + +		dojo.addOnLoad(function(){ +			doh.register("pane1", +				[ +					{ +						name: "no_autoparse", +						runTest: function(t){ +							if(dijit.byId("pane1")){ +								throw doh._AssertFailure("Page got autoparsed when it shouldn't"); +							} +						} +					} +				] +			); + +			var pane2; + +			doh.registerGroup("pane2", +				[ +					{ +						name: "clear_content", +						setUp: function(t){ +							pane2 = new dijit.layout.ContentPane({ +								preventCache: true +							}, dojo.byId("pane2")); +							pane2.setContent();// pass undefined on purpose +						}, +						runTest: function(t){ +							t.assertEqual(0, dijit._Container.prototype.getChildren.call(pane2).length); +							t.assertEqual("", pane2.domNode.innerHTML) +						} +					}, +					{ +						name: "setContent_String", +						setUp: function(){ +							pane2.setContent(); +						}, +						runTest: function(t){ +							var msg = "<h3>a simple html string</h3>"; +							pane2.setContent(msg); +							t.assertEqual(msg, pane2.domNode.innerHTML.toLowerCase()); +						} +					}, +					{ +						name: "setContent_DOMNode", +						setUp: function(t){ +							var div = dojo.doc.createElement('div'); +							div.innerHTML = "setContent( [DOMNode] )"; +							div.setAttribute('dojoType', 'dijit.TestWidget'); +							pane2.setContent(div); +						}, +						runTest: function(t){ +							t.assertEqual(1, dijit._Container.prototype.getChildren.call(pane2).length); +						}, +						tearDown: function(t){ +							pane2.setContent(); // clear content for next test +						} +					}, +					{ +						name: "setContent_NodeList", +						setUp: function(t){ +							var div = dojo.doc.createElement('div'); +							div.innerHTML = "<div dojotype='dijit.TestWidget'>above</div>" +											+"Testing!<div><p><span><b>Deep nested</b></span></p></div>" +											+"<div dojotype='dijit.TestWidget'>below</div>"; + +							var list = div.childNodes; +							pane2.setContent(div.childNodes); +						}, +						runTest: function(t){ +							t.assertEqual(2, dijit._Container.prototype.getChildren.call(pane2).length); + +							//regular DOM check +							var children = pane2.domNode.childNodes; +							t.assertEqual(4, children.length); +							t.assertEqual("Testing!", children[1].nodeValue); +							t.assertEqual("div", children[2].nodeName.toLowerCase()); +							t.assertEqual("<p><span><b>deep nested</b></span></p>", children[2].innerHTML.toLowerCase()); +						} +					}, +					{ +						name: "setContent_dojo_NodeList", +						setUp: function(t){ +							pane2.setContent(); +						}, +						runTest: function(t){ +							var div = dojo.doc.createElement('div'); +							div.innerHTML = "<div dojotype='dijit.TestWidget'>above</div>" +										+"Testing!<div><p><span><b>Deep nested</b></span></p></div>" +										+"<div dojotype='dijit.TestWidget'>below</div>"; + +							var list = new dojo.NodeList(); +							dojo.forEach(div.childNodes, function(n){ +								list.push(n.cloneNode(true)); +							}); + +							pane2.setContent(list); +							t.assertEqual(4, pane2.domNode.childNodes.length); +						} +					}, +					{ +						name: "extractContent", +						runTest: function(t){ +							var def = pane2.extractContent; +							t.assertFalse(def); + +							// test that it's actually working +							pane2.extractContent = true; +							pane2.setContent('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" ' +								+'"http://www.w3.org/TR/html4/strict.dtd">' +								+'<html><head><style>body{font-weight:bold;}</style></head>' +								+'<body>extractContent test</body></html>'); + +							t.assertEqual("extractContent test", pane2.domNode.innerHTML); + +							// reset back to default +							pane2.extractContent = def; +						} +					}, + +					///////////////////////////////////////////////////////////////////////// +					// We assume that our network connection has a maximum of 1.5 sec latency +					///////////////////////////////////////////////////////////////////////// +					{ +						name: "setHref_loading", +						timeout: 1800, +						setUp: function(t){ +							pane2.setHref('getResponse.php?messId=1'); +						}, +						runTest: function(t){ +							var d = new tests.Deferred(); +							setTimeout(d.getTestCallback( +								function(){ +									t.assertEqual(1, dijit._Container.prototype.getChildren.call(pane2).length); +								}) +							, 1500); +							return d; +						} +					}, +					{ +						name: "setHref_then_cancel", +						timeout: 2800, +						setUp: function(t){ +							pane2.setContent();// clear previous +						}, +						runTest: function(t){ +							var msg = "This should NEVER be seen!"; +							pane2.setHref('getResponse.php?delay=1000&message='+encodeURI(msg)); +							var d = new t.Deferred(); +							setTimeout(d.getTestCallback( +								function(){ +									t.assertFalse(pane2.domNode.innerHTML == msg); +								} +							), 2500); + +							pane2.cancel(); + +							return d; +						} +					}, +					{ +						// test that setHref cancels a inflight setHref +						name: "setHref_cancels_previous_setHref", +						timeout: 2800, +						setUp: function(t){ +							pane2.setContent(); +						}, +						runTest: function(t){ +							var msgCanceled = "This should be canceled"; +							pane2.setHref("getResponse.php?delay=1000&message="+encodeURI(msgCanceled)); + +							var msg = "This message should win over the previous"; +							setTimeout(function(){ +								pane2.setHref("getResponse.php?message="+encodeURI(msg)); +							}, 900); + +							var d = new t.Deferred(); +							setTimeout(d.getTestCallback( +								function(){ +									t.assertEqual(msg, pane2.domNode.innerHTML); +								} +							), 2500); +							return d; +						} +					}, +					{ +						name: "setContent_cancels_setHref", +						timeout: 2800, +						setUp: function(t){ +							pane2.setContent(); +						}, +						runTest: function(t){ +							var msgCanceled = "This message be canceled"; +							pane2.setHref("getResponse.php?delay=1000&message="+encodeURI(msgCanceled)); + +							var msg = "This message should win over the inflight one"; +							setTimeout(function(){ +								pane2.setContent(msg); +							}, 900); + +							var d = new t.Deferred(); +							setTimeout(d.getTestCallback( +								function(){ +									t.assertEqual(msg, pane2.domNode.innerHTML); +								} +							), 2500); +							return d; +						} +					}, +					{ +						name: "refresh", +						timeout: 1900, +						setUp: function(t){ +							pane2.setHref("getResponse.php?message="+encodeURI('initial load')); +						}, +						runTest: function(t){ +							var msg = 'refreshed load' +							setTimeout(function(){ +								pane2.href = "getResponse.php?message="+encodeURI(msg); +								pane2.refresh(); +							}, 100); + +							var d = new t.Deferred(); +							setTimeout(d.getTestCallback( +								function(){ +									t.assertEqual(msg, pane2.domNode.innerHTML); +								} +							), 1600); +							return d; + +						} +					}, +					{ +						name: "isLoaded", +						timeout: 1800, +						setUp: function(t){ +							pane2.setContent(); +						}, +						runTest: function(t){ +							t.assertTrue(pane2.isLoaded); + +							pane2.setHref("getResponse.php?delay=300&message=test"); + +							t.assertFalse(pane2.isLoaded); + +							var ilObj = {}; // a object to get a reference instead of copy + +							// probe after 200ms +							setTimeout(function(){ +								ilObj.probed = pane2.isLoaded; +							}, 200); + +							var d = new t.Deferred(); +							setTimeout(d.getTestCallback( +								function(){ +									t.assertTrue(pane2.isLoaded); +									t.assertFalse(ilObj.probed); +								} +							), 1500); +							return d; +						} +					}, +					{ +						// test that we does'nt load a response if we are hidden +						name: "wait_with_load_when_domNode_hidden", +						timeout: 1800, +						setUp: function(t){ +							pane2.domNode.style.display = 'none'; +							pane2.setContent(); +						}, +						runTest: function(t){ +							pane2._msg = "This text should not be loaded until after widget is shown"; +							pane2.setHref("getResponse.php?message="+encodeURI(pane2._msg)); +							var d = new t.Deferred(); +							setTimeout(d.getTestCallback( +								function(){ +									t.assertFalse(pane2.domNode.innerHTML == pane2._msg); +								} +							), 1500); +							return d; +						}, +						tearDown: function(t){ +							pane2.domNode.style.display = ""; +						} +					}, +					{ +						name: "onDownloadError", +						timeout: 1800, +						setUp: function(t){ +							pane2.setContent(); +						}, +						runTest: function(t){ +							var res = {}; +							var msg = "Error downloading modified message"; +							var orig = pane2.onDownloadError; + + +							pane2.onDownloadError = function(){ +								return msg; +							} + +							this.onError = function(e){ +								res.onError = true; +								res.onError_Arg = !!e; +								return "This message should be ignored as it gets invoked by dojo.connect"; +							} + +							var evtHandle = dojo.connect(pane2, 'onDownloadError', this, 'onError'); + +							// test onDownloadError +							pane2.setHref('nonexistant'); + +							// do the test +							var d = new t.Deferred(); +							setTimeout(function(){ +								try{ +									if(!res.onError){ +										d.errback(new doh._AssertFailure("onDownloadError was never invoked")); +									} +									if(!res.onError_Arg){ +										d.errback(new doh._AssertFailure("onDownloadError did'nt get any argument on invokation")); +									} +									if(pane2.domNode.innerHTML != msg){ +										d.errback(new doh._AssertFailure("custom errortext not set")); +									} +									d.callback(true); +								}catch(e){ +									d.errback(e); +								}finally{ +									// reset to default +									dojo.disconnect(evtHandle); +									pane2.onDownloadError = orig; +								} +							}, 1500); + +							return d; +						} +					}, +					{ +						name: "onLoad|Unload_onDownloadStart|End", +						timeout: 2400, +						setUp:function(t){ +							pane2.setContent(); +						}, +						runTest:function(t){ +							var obj = { +								start:function(){ +									this.start_called = 1; +									// check that custom message gets set +									setTimeout(function(){ +										obj.start_msg = (pane2.domNode.innerHTML == msg); +									}, 20); +								}, +								end: function(){ this.end_called = 1; }, +								load: function(){ this.load_called = 1; }, +								unload: function(){ this.unload_called = 1; } +							}; + +							//set custom message +							var origStart = pane2.onDownloadStart; +							var msg = "custom downloadstart message"; +							pane2.onDownloadStart = function(){ return msg; }; + +							var startHandler = dojo.connect(pane2, 'onDownloadStart', obj, 'start'); +							var endHandler = dojo.connect(pane2, 'onDownloadEnd', obj, 'end'); +							var loadHandler = dojo.connect(pane2, 'onLoad', obj, 'load'); +							var unloadHandler = dojo.connect(pane2, 'onUnload', obj, 'unload'); + +							pane2.setHref('getResponse.php?delay=400'); + +							var d = new t.Deferred(); +							setTimeout(function(){ +								try{ +									if(!obj.start_called){ +										d.errback(new doh._AssertFailure('onDownloadStart not called')); +									} +									if(!obj.start_msg){ +										d.errback(new doh._AssertFailure('custom download message not set')); +									} +									if(!obj.end_called){ +										d.errback(new doh._AssertFailure('onDownloadEnd not called')); +									} +									if(!obj.unload_called){ +										d.errback(new doh._AssertFailure('onUnload not called')); +									} +									if(!obj.load_called){ +										d.errback(new doh._AssertFailure('onLoad not called')); +									} +									d.callback(true); +								}catch(e){ +									d.errback(e); +								}finally{ +									dojo.disconnect(endHandler); +									dojo.disconnect(startHandler); +									dojo.disconnect(unloadHandler); +									dojo.disconnect(loadHandler); + +									pane2.onDownloadStart = origStart; +								} +							}, 1900); + +							return d; +						} +					} + +				] +			); + +			var pane3, st, tmp; + +			doh.registerGroup("child_to_StackContainer", +				[ +					{ +						// TODO: this test should be moved to registerGroup setUp when #3504 is fixed +						//		We actually dont need to test anything here, just setUp +						name: "setUp_StackContainer", +						setUp:function(t){ +							st = dojo.byId('stackcontainer'); +							dojo.addClass(st, 'box'); +							st = new dijit.layout.StackContainer({}, st); + +							st.addChild(new dijit.TestWidget()); +							pane3 = new dijit.layout.ContentPane({ +								href:'getResponse.php?delay=300&message=Loaded!', +								preventCache: true +							}, dojo.doc.createElement('div')); +							st.addChild(pane3); + +							pane3.startup(); // starts the ContentPane +						}, +						runTest:function(t){ +							t.assertTrue(st); +							t.assertEqual(2, st.getChildren().length); +						} +					}, +					{ +						name: "preload_false_by_default", +						runTest: function(t){ +							t.assertFalse(pane3.isLoaded); +							t.assertEqual('', pane3.domNode.innerHTML); +						} +					}, +					{ +						name: "startLoad when selected", +						timeout: 2100, +						runTest: function(t){ +							st.selectChild(pane3); + +							var d = new t.Deferred(); +							setTimeout(d.getTestCallback( +								function(){ +									t.assertTrue(pane3.isLoaded); +									t.assertEqual('Loaded!', pane3.domNode.innerHTML); +								} +							), 1800); + +							return d; +						} +					}, +					{ +						name: "refreshOnShow", +						timeout: 2100, +						setUp: function(t){ +							tmp = { +								onUnload: function(){ this._unload_fired = 1; }, +								onLoad: function(){ this._load_fired = 1; } +							}; +							tmp.unload = dojo.connect(pane3, 'onUnload', tmp, 'onUnload'); +							tmp.load = dojo.connect(pane3, 'onLoad', tmp, 'onLoad'); + +							pane3.refreshOnShow = true; +						}, +						runTest: function(t){ +							var d = new t.Deferred(); +							st.back(); +							st.forward(); + +							setTimeout(d.getTestCallback(function(){ +								t.assertTrue(tmp._unload_fired); +								t.assertTrue(tmp._load_fired); +								t.assertEqual('Loaded!', pane3.domNode.innerHTML); +							}), 1800); + +							return d; +						}, +						tearDown: function(){ +							dojo.disconnect(tmp.unload); +							dojo.disconnect(tmp.load); +							pane3.refreshOnShow = pane3.constructor.prototype.refreshOnShow; +						} +					}, +					{ +						name: "downloadTriggeredOnStartup", +						timeout: 1800, +						runTest: function(t){ +							var href = 'getResponse.php?message=Loaded!' +							var pane4 = new dijit.layout.ContentPane({ +								href:href, +								preventCache: true +							}, dojo.doc.createElement('div')); + +							dojo.place(pane4.domNode, pane3.domNode, 'after'); + +							pane4.startup(); // parser should call startup when djConfig.parseOnLoad=true + +							var d = new t.Deferred(); +							setTimeout(d.getTestCallback(function(){ +								t.assertEqual('Loaded!', pane4.domNode.innerHTML); +								pane4.destroy(); +							}), 1500); +							return d; +						} +					} +				] +			); + +			doh.run(); +		}); +	</script> +</head> +<body class="tundra"> +	<h2>dijit.layout.ContentPane test</h2> +	<h3>Test designed to run on localhost (minimize impact from network latency)</h3> + +	<h4>This should NOT be parsed automatically</h4> +	<div dojoType="dijit.layout.ContentPane" class="box" hasShadow="true" id="pane1"> +		<div dojoType='dijit.TestWidget'>If this has a different background and a red border, the page parsed when it shouldn't</div> +	</div> +	<br/><h3>Testing ContentPane</h3> +	<div id='pane2' class='box'> +		Even tough the entire page isn't scanned for widgets, +		any sub widgets of a ContentPane will be created when a ContentPane is created<br/> +		<span id="zero" dojoType='dijit.TestWidget'>This should have a backgroundcolor and a border</span> +		<div id="one" dojoType="dijit._Widget"></div> +		<div id="two" dojoType="dijit._Widget"></div> +		<div id="three" dojoType="dijit._Widget"></div> +	</div> +	<br/><br/> +	<div id='stackcontainer'></div> +</body> +</html> | 
