dijit
Version:
Dijit provides a complete collection of user interface controls based on Dojo, giving you the power to create web applications that are highly optimized for usability, performance, internationalization, accessibility, but above all deliver an incredible u
270 lines (231 loc) • 6.56 kB
HTML
<!--
Remove in 2.0. Replaced by dijit/tests/registry.html
-->
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>Dijit manager unit test</title>
<style type="text/css">
@import "../../themes/claro/document.css";
@import "../css/dijitTests.css";
</style>
<script type="text/javascript" src="../../../dojo/dojo.js"
data-dojo-config="isDebug: true"></script>
<script type="text/javascript" src="../_testCommon.js"></script>
<script type="text/javascript">
dojo.require("doh.runner");
dojo.require("dojo.parser");
dojo.require("dijit.dijit");
dojo.ready(function(){
dojo.declare("foo", dijit._Widget, {
name: "",
attr1: 0,
attr2: 0
});
dojo.declare("bar", dijit._Widget, {
name: "",
attr1: 0,
attr2: 0
});
dojo.declare("Baz", dijit._Widget, {
name: "",
attr1: 1,
attr2: 1
});
doh.register("parse", function(){
dojo.parser.parse();
});
doh.register("dijit._base.manager",
[
function forEachTest(t){
var names=[];
dijit.registry.forEach(function(widget){ names.push(widget.name); });
t.is(names.join(" "), "bob is your uncle");
},
function filterTest(t){
var names=[];
dijit.registry.
filter(function(widget){ return widget.attr1==10; }).
forEach(function(widget){ names.push(widget.name); });
t.is(names.join(" "), "bob uncle");
},
function filterScope(t){
// testing filter with a forced 'this' in the cb function
var names = [],
obj = {
check: function(widget, val){
// same as previous unit test
return widget.attr1 == val;
}
};
dijit.registry
.filter(function(w){ return this.check(w, 10); }, obj)
.forEach(function(w){ names.push(w.name) })
;
t.is(names.join(" "), "bob uncle");
},
function byId(t){
t.is(dijit.byId("three").name, "your");
t.f(dijit.byId("nonexistent"));
},
function byClass(t){
var names=[];
dijit.registry.
byClass("bar").
forEach(function(widget){ names.push(widget.name); });
t.is(names.join(" "), "your uncle");
},
function lengthTest(t){
// test existing length
t.is(dijit.registry.byClass("bar").length, 2);
// test adding:
var n = new Baz();
t.is(dijit.registry.byClass("Baz").length, 1);
// test destroying:
n.destroy();
t.is(dijit.registry.byClass("Baz").length, 0);
},
function nullLengthTest(t){
var ws = new dijit.WidgetSet();
var count = 0;
var b = [new Baz(), new Baz()];
ws.add(b[0]);
ws.add(b[1]);
t.is(2, ws.length);
ws.remove(b[0].id);
t.is(1, ws.length);
ws.remove(b[1].id);
t.is(0, ws.length);
// ensure we don't ever go below 0
ws.remove("invalidId");
t.is(0, ws.length);
dojo.forEach(b, function(w){ w.destroy() });
},
function forEachScope(t){
var obj = {
getIt: function(widget){
return widget.id;
}
};
dijit.registry.forEach(function(w){
t.is(w.id, this.getIt(w));
}, obj);
},
function forEachReturn(t){
// also tests WidgetSet.map
var ws = dijit.registry.forEach(function(){}).map(function(w){
return w.declaredClass.toUpperCase();
});
t.t(dojo.isArray(ws));
t.is(ws.length, dijit.registry.length);
},
function forEachInc(t){
var x = 0;
dijit.registry.forEach(function(w, i){
t.is(i, x++);
});
},
function toArrayTest(t){
var ws = dijit.registry.byClass("bar");
var wa = ws.toArray();
t.t(dojo.isArray(wa));
t.is(ws.length, wa.length);
var wda = dojo.map(wa, function(w){
return w.domNode;
});
t.is(wda.length, ws.length);
var wdas = wda.slice(-1);
t.is(1, wdas.length);
var w = dijit.byNode(wdas[0]);
t.is(w.declaredClass, "bar");
},
function mapTest(t){
var ids = dijit.registry.map(function(w){
return w.id;
});
t.is(ids.length, dijit.registry.length);
dijit.registry.forEach(function(id){
t.t(dijit.byId(id));
});
},
function everyTest(t){
var a = new Baz();
var b = new Baz();
var hasid = dijit.registry.every(function(w){
return w.id;
});
t.t(hasid);
var hasattr1 = dijit.registry.every(function(w){
return w.attr1 > 0;
});
t.t(hasattr1);
var x = 0;
var once = dijit.registry.every(function(w){
x++;
return false;
});
t.is(1, x);
t.f(once);
a.destroy();
b.destroy();
},
function someTest(t){
var a = new Baz();
var b = new Baz();
var x = 0;
var hasid = dijit.registry.some(function(w){
x++;
return w.id;
});
t.is(1, x);
t.t(hasid);
var n = 0;
var hasattr1 = dijit.registry.some(function(w){
n++;
return false;
});
t.is(n, dijit.registry.length);
t.f(hasattr1);
var l = 0;
var once = dijit.registry.some(function(w){
l++;
return true;
});
t.is(1, l);
t.t(once);
a.destroy();
b.destroy();
},
function deleteTest(t){
var names=[];
dijit.byId("two").destroy();
dijit.byId("four").destroy();
dijit.registry.forEach(function(widget){ names.push(widget.name); });
t.is(names.join(" "), "bob your");
},
function getEnclosingWidgetTest(t){
t.is(dijit.getEnclosingWidget(dojo.byId("not-a-widget")), null);
t.is(dijit.getEnclosingWidget(dojo.byId("three")).name, "your");
t.is(dijit.getEnclosingWidget(dojo.byId("three.one")).name, "your");
t.is(dijit.getEnclosingWidget(dojo.byId("three.one.one")).name, "your");
}
]
);
doh.run();
});
</script>
</head>
<body>
<h1>Dijit Manager Unit Test</h1>
<div id="one" data-dojo-type="foo" data-dojo-props='name:"bob", attr1:10, attr2:10'></div>
<div id="two" data-dojo-type="foo" data-dojo-props='name:"is", attr1:5, attr2:10'></div>
<div id="three" data-dojo-type="bar" data-dojo-props='name:"your", attr1:5, attr2:5'>
<div id="three.one">
<div id="three.one.one"></div>
</div>
</div>
<div id="four" data-dojo-type="bar" data-dojo-props='name:"uncle", attr1:10, attr2:5'></div>
<div id="not-a-widget"></div>
</body>
</html>