UNPKG

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
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(); }); });