diff options
Diffstat (limited to 'includes/js/dijit/tests/_Templated.html')
| -rw-r--r-- | includes/js/dijit/tests/_Templated.html | 164 | 
1 files changed, 164 insertions, 0 deletions
| diff --git a/includes/js/dijit/tests/_Templated.html b/includes/js/dijit/tests/_Templated.html new file mode 100644 index 0000000..de6dc59 --- /dev/null +++ b/includes/js/dijit/tests/_Templated.html @@ -0,0 +1,164 @@ +<html> +	<head> +		<title>_Templated tests</title> +		<script type="text/javascript" src="../../dojo/dojo.js" +			djConfig="parseOnLoad: true, isDebug: true"></script> +		<script type="text/javascript"> +			dojo.require("doh.runner"); + +			dojo.require("dijit._Widget"); +			dojo.require("dijit._Templated"); + +			function getOuterHTML(/*DomNode*/ node){ +				var wrapper = dojo.doc.createElement("div"); +				wrapper.appendChild(node); +				return wrapper.innerHTML.toLowerCase();		// IE prints <BUTTON> rather than <button>; normalize it. +			} + +			dojo.addOnLoad(function(){ +				// Template with no variables (should be cached as a DOM tree) +				dojo.declare("SimpleTemplate", [dijit._Widget, dijit._Templated], { +					attributeMap: {}, +					id: "test1", +					templateString: "<button><span>hello > world</span></button>" +				}); + +				// Template with variables +				dojo.declare("VariableTemplate", [dijit._Widget, dijit._Templated], { +					attributeMap: {}, +					id: "test2", +					num: 5, +					text: "hello ><\"' world", + +					templateString: "<button><span num=\"${num}\">${text}</span></button>" +				}); + +				// Template that starts with special node (has to be constructed inside a <tbody>) +				dojo.declare("TableRowTemplate", [dijit._Widget, dijit._Templated], { +					attributeMap: {}, +					id: "test3", +					text: "bar", +					templateString: "<tr><td>${text}</td></tr>" +				}); + +				// Illegal subsitition variable name +				dojo.declare("IllegalSubstitution", [dijit._Widget, dijit._Templated], { +					templateString: "<tr><td>${fake}</td></tr>" +				}); + +				// dojoAttachPoint +				dojo.declare("AttachPoint", [dijit._Widget, dijit._Templated], { +					attributeMap: {foo: "", style: "", bar: "buttonNode"}, +					templateString: "<div style='border: 1px solid red'>" + +										"<button dojoAttachPoint='buttonNode,focusNode'>hi</button>" + +										'<span><input dojoAttachPoint="inputNode" value="input"></span>' + +										"<span dojoAttachPoint='containerNode'></span>" + +									"</div>" +				}); + +				// dojoAttachEvent +				dojo.declare("AttachEvent", [dijit._Widget, dijit._Templated], { +					click: function(){ this.clickCalled=true; }, +					onfocus: function(){ this.focusCalled=true; }, +					focus2: function(){ this.focus2Called=true; }, +					templateString: "<table style='border: 1px solid blue'><tr>" + +										"<td><button dojoAttachPoint='left' dojoAttachEvent='onclick: click, onfocus'>left</button></td>" + +										"<td><button dojoAttachPoint='right' dojoAttachEvent='onclick: click, onfocus: focus2'>right</button></td>" + +									"</tr></table>" +				}); + +				// TODO: +				// TemplatePath + +				var testW; +				doh.register("dijit.tests._Templated.html", +					[ +						function simple(t){ +							var widget=new SimpleTemplate(); +							var wrapper=dojo.byId("simpleWrapper"); +							wrapper.appendChild(widget.domNode); +							t.is('<button widgetid=\"test1\"><span>hello > world</span></button>', wrapper.innerHTML.toLowerCase());			 +						}, +						function variables(t){ +							var widget=new VariableTemplate(); +							var wrapper=dojo.byId("variables1Wrapper"); +							wrapper.appendChild(widget.domNode); +							t.is('<button widgetid=\"test2\"><span num="5">hello ><"\' world</span></button>', wrapper.innerHTML.toLowerCase()); +						}, + +						function variables2(t){	 +							var widget = new VariableTemplate({id: "myid", num: -5, text: ""}); +							var wrapper=dojo.byId("variables2Wrapper"); +							wrapper.appendChild(widget.domNode); +							t.is('<button widgetid=\"myid\"><span num="-5"></span></button>', wrapper.innerHTML.toLowerCase()); +						}, +						function table(t){ +							var widget=new TableRowTemplate({text: "hello"}); +							var wrapper = dojo.byId("trWrapper"); +							wrapper.appendChild(widget.domNode); +							var actual = wrapper.innerHTML.toLowerCase().replace(/\r/g, "").replace(/\n/g, ""); +							t.is('<tr widgetid="test3"><td>hello</td></tr>', actual); +						}, +						function illegal(t){ +							var hadException=false; +							try{ +								var widget=new IllegalSubstitution(); +							}catch(e){ +								console.log(e); +								hadException=true; +							} +							t.t(hadException); +						}, +						function attachPoint(t){ +							var widget=new AttachPoint(); +							var wrapper = dojo.byId("attachPointWrapper"); +							wrapper.appendChild(widget.domNode); +							t.is(widget.containerNode.tagName.toLowerCase(), "span"); +							t.is(widget.buttonNode.tagName.toLowerCase(), "button"); +							t.is(widget.focusNode.tagName.toLowerCase(), "button"); +							t.is(widget.inputNode.tagName.toLowerCase(), "input"); +						}, +						function attributeMap(t){ +							var widget=new AttachPoint({foo:"value1", bar:"value2", style:"color: blue"}); +							var wrapper = dojo.byId("attributeMapWrapper"); +							wrapper.appendChild(widget.domNode); +							t.is("value1", widget.domNode.getAttribute("foo")); +							t.is("value2", widget.buttonNode.getAttribute("bar")); +							// TODO: this is() check is unreliable, IE returns a string like +							// border-right: red 1px solid; border-top: red 1px solid; border-left: red 1px solid; color: blue; border-bottom: red 1px solid +							// t.is("border: 1px solid red; color: blue;", widget.domNode.style.cssText.toLowerCase()); +						}, +						function attachEvent(t){ +							var deferred = new doh.Deferred(); +							var widget=new AttachEvent(); +							var wrapper = dojo.byId("attachEventWrapper"); +							wrapper.appendChild(widget.domNode); +							widget.left.focus(); +							widget.right.focus(); +							setTimeout(function(){ +								t.t(widget.focusCalled); +								t.t(widget.focus2Called); +								deferred.callback(true); +							}, 0); +							return deferred; +						} +					] +				); +				doh.run(); +			}); +		</script> +	<style type="text/css"> +		@import "../themes/tundra/tundra.css"; +	</style> +	</head> +	<body> +		<h1>_Templated test</h1> +		<div id="simpleWrapper"></div> +		<div id="variables1Wrapper"></div> +		<div id="variables2Wrapper"></div> +		<table><tbody id="trWrapper"></tbody></table> +		<div id="attachPointWrapper"></div> +		<div id="attributeMapWrapper"></div> +		<div id="attachEventWrapper"></div> +	</body> +</html> | 
