dojox
Version:
Dojo eXtensions, a rollup of many useful sub-projects and varying states of maturity – from very stable and robust, to alpha and experimental. See individual projects contain README files for details.
244 lines (228 loc) • 10.1 kB
JavaScript
define([
"doh",
"dojo/_base/array",
"dojo/_base/config",
"dojo/_base/declare",
"dijit/_WidgetBase",
"dojox/mvc/at",
"dijit/_TemplatedMixin",
"dijit/_WidgetsInTemplateMixin",
"dijit/_Container",
"dijit/form/TextBox",
"dojox/mvc/getStateful",
"dojox/mvc/WidgetList",
"dojo/text!dojox/mvc/tests/test_WidgetList_WidgetListInTemplate.html",
"dojo/text!dojox/mvc/tests/test_WidgetList_childTemplate.html",
"dojo/text!dojox/mvc/tests/test_WidgetList_childBindings.json"
], function(doh, array, config, declare, _WidgetBase, at, _TemplatedMixin, _WidgetsInTemplateMixin, _Container, _TextBox, getStateful, WidgetList, template, childTemplate, childBindings){
var a = getStateful([
{
Serial: "A111",
First: "Anne",
Last: "Ackerman",
Location: "NY",
Office: "1S76",
Email: "a.a@test.com",
Tel: "123-764-8237",
Fax: "123-764-8228"
},
{
Serial: "B111",
First: "Ben",
Last: "Beckham",
Location: "NY",
Office: "5N47",
Email: "b.b@test.com",
Tel: "123-764-8599",
Fax: "123-764-8600"
},
{
Serial: "C111",
First: "Chad",
Last: "Chapman",
Location: "CA",
Office: "1278",
Email: "c.c@test.com",
Tel: "408-764-8237",
Fax: "408-764-8228"
}
]), b = getStateful([
{
Serial: "D111",
First: "David",
Last: "Durham",
Location: "NJ",
Office: "C12",
Email: "d.d@test.com",
Tel: "514-764-8237",
Fax: "514-764-8228"
},
{
Serial: "E111",
First: "Emma",
Last: "Eklof",
Location: "NY",
Office: "4N76",
Email: "e.e@test.com",
Tel: "123-764-1234",
Fax: "123-764-4321"
}
]);
var wl0 = new WidgetList({
children: getStateful(a),
childParams: {
startup: function(){
this.labelNode.set("value", at("rel:", "Serial"));
this.inputNode.set("value", at("rel:", "First"));
this.inherited("startup", arguments);
}
},
templateString: childTemplate
});
wl0.startup();
var wl1 = new WidgetList({
children: getStateful(a),
childBindings: eval("(" + childBindings + ")"),
templateString: childTemplate
});
wl1.startup();
var wl2 = new WidgetList({
partialRebuild: true,
children: getStateful(a),
childParams: {
startup: function(){
this.labelNode.set("value", at("rel:", "Serial"));
this.inputNode.set("value", at("rel:", "First"));
this.inherited("startup", arguments);
}
},
templateString: childTemplate
});
wl2.startup();
var wl3 = new WidgetList({
partialRebuild: true,
children: getStateful(a),
childBindings: eval("(" + childBindings + ")"),
templateString: childTemplate
});
wl3.startup();
doh.register("dojox.mvc.tests.doh.WidgetList", [
function programmaticBinding(){
var children = wl0.getChildren();
doh.is("A111", children[0].labelNode.value, "The label of index #0 should be: A111");
doh.is("Anne", children[0].inputNode.value, "The input of index #0 should be: Anne");
doh.is("B111", children[1].labelNode.value, "The label of index #1 should be: B111");
doh.is("Ben", children[1].inputNode.value, "The input of index #1 should be: Ben");
doh.is("C111", children[2].labelNode.value, "The label of index #2 should be: C111");
doh.is("Chad", children[2].inputNode.value, "The input of index #2 should be: Chad");
wl0.set("children", b);
children = wl0.getChildren();
doh.is("D111", children[0].labelNode.value, "The label of index #0 should be: D111");
doh.is("David", children[0].inputNode.value, "The input of index #0 should be: David");
doh.is("E111", children[1].labelNode.value, "The label of index #1 should be: E111");
doh.is("Emma", children[1].inputNode.value, "The input of index #1 should be: Emma");
},
function declarativeBinding(){
var children = wl1.getChildren();
doh.is("A111", children[0].labelNode.value, "The label of index #0 should be: A111");
doh.is("Anne", children[0].inputNode.value, "The input of index #0 should be: Anne");
doh.is("B111", children[1].labelNode.value, "The label of index #1 should be: B111");
doh.is("Ben", children[1].inputNode.value, "The input of index #1 should be: Ben");
doh.is("C111", children[2].labelNode.value, "The label of index #2 should be: C111");
doh.is("Chad", children[2].inputNode.value, "The input of index #2 should be: Chad");
wl1.set("children", b);
children = wl1.getChildren();
doh.is("D111", children[0].labelNode.value, "The label of index #0 should be: D111");
doh.is("David", children[0].inputNode.value, "The input of index #0 should be: David");
doh.is("E111", children[1].labelNode.value, "The label of index #1 should be: E111");
doh.is("Emma", children[1].inputNode.value, "The input of index #1 should be: Emma");
},
function removeAddElement(){
var c = getStateful(a.slice(0));
wl0.set("children", c);
wl1.set("children", c);
wl2.set("children", c);
wl3.set("children", c);
c.splice(1, 1);
var children = wl0.getChildren();
doh.is("C111", children[1].labelNode.value, "The label of index #1 should be: C111");
doh.is("Chad", children[1].inputNode.value, "The input of index #1 should be: Chad");
children = wl1.getChildren();
doh.is("C111", children[1].labelNode.value, "The label of index #1 should be: C111");
doh.is("Chad", children[1].inputNode.value, "The input of index #1 should be: Chad");
children = wl2.getChildren();
doh.is("C111", children[1].labelNode.value, "The label of index #1 should be: C111");
doh.is("Chad", children[1].inputNode.value, "The input of index #1 should be: Chad");
children = wl3.getChildren();
doh.is("C111", children[1].labelNode.value, "The label of index #1 should be: C111");
doh.is("Chad", children[1].inputNode.value, "The input of index #1 should be: Chad");
c.splice(1, 0, b[0], b[1]);
children = wl0.getChildren();
doh.is("D111", children[1].labelNode.value, "The label of index #1 should be: D111");
doh.is("David", children[1].inputNode.value, "The input of index #1 should be: David");
doh.is("E111", children[2].labelNode.value, "The label of index #2 should be: E111");
doh.is("Emma", children[2].inputNode.value, "The input of index #2 should be: Emma");
children = wl1.getChildren();
doh.is("D111", children[1].labelNode.value, "The label of index #1 should be: D111");
doh.is("David", children[1].inputNode.value, "The input of index #1 should be: David");
doh.is("E111", children[2].labelNode.value, "The label of index #2 should be: E111");
doh.is("Emma", children[2].inputNode.value, "The input of index #2 should be: Emma");
doh.is("C111", children[3].labelNode.value, "The label of index #3 should be: C111");
doh.is("Chad", children[3].inputNode.value, "The input of index #3 should be: Chad");
children = wl2.getChildren();
doh.is("D111", children[1].labelNode.value, "The label of index #1 should be: D111");
doh.is("David", children[1].inputNode.value, "The input of index #1 should be: David");
doh.is("E111", children[2].labelNode.value, "The label of index #2 should be: E111");
doh.is("Emma", children[2].inputNode.value, "The input of index #2 should be: Emma");
children = wl3.getChildren();
doh.is("D111", children[1].labelNode.value, "The label of index #1 should be: D111");
doh.is("David", children[1].inputNode.value, "The input of index #1 should be: David");
doh.is("E111", children[2].labelNode.value, "The label of index #2 should be: E111");
doh.is("Emma", children[2].inputNode.value, "The input of index #2 should be: Emma");
doh.is("C111", children[3].labelNode.value, "The label of index #3 should be: C111");
doh.is("Chad", children[3].inputNode.value, "The input of index #3 should be: Chad");
},
function replaceElement(){
wl0.set("children", a);
wl1.set("children", a);
a.set(1, b[1]);
var children = wl0.getChildren();
doh.is("E111", children[1].labelNode.value, "The label of index #1 should be: E111");
doh.is("Emma", children[1].inputNode.value, "The input of index #1 should be: Emma");
children = wl1.getChildren();
doh.is("E111", children[1].labelNode.value, "The label of index #1 should be: E111");
doh.is("Emma", children[1].inputNode.value, "The input of index #1 should be: Emma");
},
function wrongChildren(){
wl0.set("children", null);
var children = wl0.getChildren();
doh.is(0, children.length, "The widget list should be empty");
wl0.set("children", true);
children = wl0.getChildren();
doh.is(0, children.length, "The widget list should be empty");
wl0.set("children", 1);
children = wl0.getChildren();
doh.is(0, children.length, "The widget list should be empty");
wl0.set("children", "foo");
children = wl0.getChildren();
doh.is(0, children.length, "The widget list should be empty");
},
function objectInChildType(){
var data = [{idx: 0}, {idx: 1}, {idx: 2}, {idx: 3}];
declare("My.Widget", _WidgetBase, {
isMyWidget: true
});
declare("My.Mixin", null, {
isMyMixin: true
});
var w = new (declare([_WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin], {templateString: template}))({childData: data});
w.startup();
var simpleChildren = w.simpleWidgetList.getChildren(),
simpleChildrenWithRegularDijit = w.simpleWidgetListWithRegularDijit.getChildren(),
simpleChildrenWithRegularDijitInMixin = w.simpleWidgetListWithRegularDijitInMixin.getChildren();
doh.t(array.every(simpleChildren, function(child){ return child.isMyWidget && child.isMyMixin && !child.addChild && !child._setValueAttr; }), "simpleChildren should be created by My.Widget and My.Mixin");
doh.t(array.every(simpleChildrenWithRegularDijit, function(child){ return !child.isMyWidget && child.isMyMixin && !child.addChild && child._setValueAttr; }), "simpleChildrenWithRegularDijit should be created by dijit/form/TextBox and My.Mixin");
doh.t(array.every(simpleChildrenWithRegularDijitInMixin, function(child){ return child.isMyWidget && child.isMyMixin && child.addChild && !child._setValueAttr; }), "simpleChildrenWithRegularDijitInMixin should be created by My.Widget, My.Mixin and dijit/_Container");
}
]);
});