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.
218 lines (198 loc) • 8.16 kB
JavaScript
require([
"dojo/parser",
"dojo/_base/Deferred",
"dojo/store/Cache",
"dojo/store/JsonRest",
"dojo/store/Memory",
"dojo/store/Observable",
"dojo/ready", // dojo.ready
"dijit/registry",
"doh/runner", //doh functions
"dojox/mobile/EdgeToEdgeStoreList",
"dojox/mobile/RoundRectStoreList",
"dojox/mobile/tests/doh/CustomListItem",
/*"dojox/mobile/parser",*/
"dojox/mobile",
"dojox/mobile/compat"
], function(parser, Deferred, Cache, JsonRest, Memory, Observable, ready, registry, runner, EdgeToEdgeStoreList, RoundRectStoreList){
var CLASS_NAME;
var DataList;
var testName;
if(IsEdgeToEdgeList){
CLASS_NAME = "mblEdgeToEdgeList";
DataList = EdgeToEdgeStoreList;
testName = "dojox.mobile.test.doh.EdgeToEdgeStoreList";
}else{
CLASS_NAME = "mblRoundRectList";
DataList = RoundRectStoreList;
testName = "dojox.mobile.test.doh.RoundRectStoreList";
}
var static_data2 = [
{label: "Apple", moveTo: "dummy"},
{label: "Banana", moveTo: "dummy"},
{label: "Cherry", moveTo: "dummy"},
{label: "Grape", moveTo: "dummy"},
{label: "Kiwi", moveTo: "dummy"},
{label: "Lemon", moveTo: "dummy"},
{label: "Melon", moveTo: "dummy"},
{label: "Orange", moveTo: "dummy"},
{label: "Peach", moveTo: "dummy"}
];
var url = "settings2.json";
store1 = new JsonRest({idProperty:"label", target: url});
store2 = Observable(new Memory({idProperty:"label", data: static_data2}));
store1.__counter = store2.__counter = 1;
store = store1;
// switch to the selected store
switchTo = function(store){
window.store = store;
registry.byId("list").setStore(store);
};
// add a new item
add1 = function(){
store.add({
label: "New Item "+(store.__counter++),
icon: "../../images/i-icon-1.png",
moveTo: "dummy"
});
};
// delete the added item
delete1 = function(){
if(store.__counter > 1){
store.remove("New Item "+(--store.__counter));
}
};
// modify the added item
var modif_counter = 0;
modify1 = function(){
if(store.__counter > 1){
store.put({
label: "New Item "+(store.__counter-1),
rightText: ++modif_counter + " changes"
});
}
};
ready(function(){
runner.register(testName, [
{
name: DataList + " Verification",
timeout: 4000,
runTest: function(){
var d = new runner.Deferred();
setTimeout(d.getTestCallback(function(){
var demoWidget = registry.byId("dojox_mobile_ListItem_0");
// check whether we correctly constructed a custom item
runner.assertTrue(demoWidget.customProp);
runner.assertEqual('mblListItem', demoWidget.domNode.className);
runner.assertEqual('mblImageIcon mblListItemIcon', demoWidget.iconNode.className);
runner.assertTrue(demoWidget.iconNode.src.search(/i-icon-1.png/i) != -1);
runner.assertEqual('mblListItemRightIcon', demoWidget.rightIconNode.className);
runner.assertEqual('mblListItemLabel', demoWidget.labelNode.className);
runner.assertEqual('Wi-Fi', demoWidget.labelNode.innerHTML);
runner.assertEqual('mblDomButtonArrow mblDomButton', demoWidget.rightIconNode.childNodes[0].className);
demoWidget = registry.byId("dojox_mobile_ListItem_3");
runner.assertEqual('mblListItem mblListItemSelected', demoWidget.domNode.className);
runner.assertEqual('mblImageIcon mblListItemIcon', demoWidget.iconNode.className);
runner.assertTrue(demoWidget.iconNode.src.search(/i-icon-4.png/i) != -1);
runner.assertEqual('mblListItemRightIcon', demoWidget.rightIconNode.className);
runner.assertEqual('mblListItemLabel', demoWidget.labelNode.className);
runner.assertEqual('General', demoWidget.labelNode.innerHTML);
runner.assertEqual('mblDomButtonArrow mblDomButton', demoWidget.rightIconNode.childNodes[0].className);
}),500);
return d;
}
},
{
name: DataList + " Verification2",
timeout: 10000,
runTest: function(){
var d = new doh.Deferred();
setTimeout(d.getTestCallback(function(){
switchTo(store2);
var demoWidget = registry.byId("dojox_mobile_ListItem_13");
runner.assertEqual('mblListItem', demoWidget.domNode.className);
runner.assertEqual(null, demoWidget.iconNode);
runner.assertEqual('mblListItemLabel', demoWidget.labelNode.className);
runner.assertEqual('Grape', demoWidget.labelNode.innerHTML);
runner.assertEqual('mblDomButtonArrow mblDomButton', demoWidget.rightIconNode.childNodes[0].className);
}),2500);
return d;
}
},
{
name: DataList + " Verification3",
timeout: 10000,
runTest: function(){
var d = new runner.Deferred();
setTimeout(d.getTestCallback(function(){
add1();
add1();
add1();
var demoWidget = registry.byId("dojox_mobile_ListItem_19");
runner.assertEqual('mblListItem', demoWidget.domNode.className);
runner.assertEqual('mblImageIcon mblListItemIcon', demoWidget.iconNode.className);
runner.assertEqual('mblListItemLabel', demoWidget.labelNode.className);
runner.assertEqual('New Item 1', demoWidget.labelNode.innerHTML);
runner.assertEqual('mblDomButtonArrow mblDomButton', demoWidget.rightIconNode.childNodes[0].className);
delete1();
demoWidget = registry.byId("dojox_mobile_ListItem_21");
runner.assertTrue(!demoWidget);
demoWidget = registry.byId("dojox_mobile_ListItem_20");
runner.assertEqual('mblListItem', demoWidget.domNode.className);
runner.assertEqual('mblImageIcon mblListItemIcon', demoWidget.iconNode.className);
runner.assertEqual('mblListItemLabel', demoWidget.labelNode.className);
runner.assertEqual('New Item 2', demoWidget.labelNode.innerHTML);
runner.assertEqual('mblDomButtonArrow mblDomButton', demoWidget.rightIconNode.childNodes[0].className);
modify1();
runner.assertEqual(modif_counter+' changes', demoWidget.get("rightText"), "modify store item");
}),1500);
return d;
}
},
{
name: DataList + " Verification4 (1.8 compat mode)",
timeout: 10000,
runTest: function(){
var d = new runner.Deferred();
setTimeout(d.getTestCallback(function(){
// Check compatibility with old-style widgets that define only an onUpdate method and no onAdd method
// (like in Dojo Mobile 1.8). In that case onUpdate is called instead of onAdd, and put() is not handled.
var listWidget = registry.byId("list");
listWidget.onAdd = undefined;
listWidget.onUpdate = function(/*Object*/item, /*Number*/insertedInto){
// summary:
// Adds a new item or updates an existing item.
if(insertedInto === this.getChildren().length){
this.addChild(this.createListItem(item)); // add a new ListItem
}else{
this.getChildren()[insertedInto].set(item); // update the existing ListItem
}
};
add1();
add1();
add1();
var demoWidget = registry.byId("dojox_mobile_ListItem_22");
runner.assertEqual('mblListItem', demoWidget.domNode.className);
runner.assertEqual('mblImageIcon mblListItemIcon', demoWidget.iconNode.className);
runner.assertEqual('mblListItemLabel', demoWidget.labelNode.className);
runner.assertEqual('New Item 3', demoWidget.labelNode.innerHTML);
runner.assertEqual('mblDomButtonArrow mblDomButton', demoWidget.rightIconNode.childNodes[0].className);
delete1();
demoWidget = registry.byId("dojox_mobile_ListItem_24");
runner.assertTrue(!demoWidget);
demoWidget = registry.byId("dojox_mobile_ListItem_23");
runner.assertEqual('mblListItem', demoWidget.domNode.className);
runner.assertEqual('mblImageIcon mblListItemIcon', demoWidget.iconNode.className);
runner.assertEqual('mblListItemLabel', demoWidget.labelNode.className);
runner.assertEqual('New Item 4', demoWidget.labelNode.innerHTML);
runner.assertEqual('mblDomButtonArrow mblDomButton', demoWidget.rightIconNode.childNodes[0].className);
modify1();
runner.assertEqual("", demoWidget.get("rightText"), "modify store item (noop in compat mode)");
}),1500);
return d;
}
}
]);
runner.run();
});
});