UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

246 lines (200 loc) 6.74 kB
/* ************************************************************************ qooxdoo - the new era of web development http://qooxdoo.org Copyright: 2011 1&1 Internet AG, Germany, http://www.1und1.de License: MIT: https://opensource.org/licenses/MIT See the LICENSE file in the project's top-level directory for details. Authors: * Tino Butz (tbtz) ************************************************************************ */ /* ************************************************************************ ************************************************************************ */ /** * * @asset(qx/icon/Tango/48/places/folder.png) */ qx.Class.define("qx.test.mobile.list.List", { extend: qx.test.mobile.MobileTestCase, members: { /** * Returns the img element on the given list, of the element item identified by elementIndex. */ getImageElement(list, elementIndex) { return list.getContentElement().childNodes[elementIndex].childNodes[0]; }, /** * Returns the title text on the given list, of the element item identified by elementIndex. */ getTitleElement(list, elementIndex) { return list.getContentElement().childNodes[elementIndex].childNodes[1] .childNodes[0]; }, /** * Returns the subtitle text on the given list, of the element item identified by elementIndex. */ getSubtitleElement(list, elementIndex) { return list.getContentElement().childNodes[elementIndex].childNodes[1] .childNodes[1]; }, __createModel() { var data = []; data.push({ title: "1", subtitle: "s1", image: "qx/icon/Tango/48/places/folder.png" }); data.push({ title: "2", subtitle: "s2", image: "qx/icon/Tango/48/places/folder.png" }); data.push({ title: "3", subtitle: "s3", image: "qx/icon/Tango/48/places/folder.png" }); data.push({ title: "4", subtitle: "s4", image: "qx/icon/Tango/48/places/folder.png" }); data.push({ title: "5", subtitle: "s5", image: "qx/icon/Tango/48/places/folder.png" }); return new qx.data.Array(data); }, __createList(createItemRenderer, configureItemFunction) { var list = new qx.ui.mobile.list.List(); this.getRoot().add(list); list.setDelegate({ configureItem: configureItemFunction ? configureItemFunction : this.__configureItemFunction, createItemRenderer: createItemRenderer ? createItemRenderer : null }); list.setModel(this.__createModel()); return list; }, __configureItemFunction(item, data, row) { item.setImage(data.image); item.setTitle(data.title); item.setSubtitle(data.subtitle); }, __assertItemsAndModelLength(list, dataLength) { var childrenLength = list.getContentElement().childNodes.length; this.assertEquals(dataLength, childrenLength); }, __cleanUp(list) { list.destroy(); var modelData = list.getModel(); if (modelData) { modelData.dispose(); modelData = null; } }, testCreate() { var list = this.__createList(); this.__assertItemsAndModelLength(list, 5); this.__cleanUp(list); }, testCustomRenderer() { var list = this.__createList(function () { return new qx.ui.mobile.list.renderer.Default(); }); this.__assertItemsAndModelLength(list, 5); this.__cleanUp(list); }, testSetModelNull() { var list = this.__createList(function () { return new qx.ui.mobile.list.renderer.Default(); }); this.__assertItemsAndModelLength(list, 5); list.getModel().dispose(); list.setModel(null); this.__assertItemsAndModelLength(list, 0); this.__cleanUp(list); }, testModelChangeRemove() { var list = this.__createList(function () { return new qx.ui.mobile.list.renderer.Default(); }); this.__assertItemsAndModelLength(list, 5); list.getModel().removeAt(0); this.__assertItemsAndModelLength(list, 4); this.__cleanUp(list); }, testModelChangeEdit() { var list = this.__createList(function () { return new qx.ui.mobile.list.renderer.Default(); }); this.__assertItemsAndModelLength(list, 5); list.getModel().setItem(0, { title: "affe", subtitle: "1", image: "qx/icon/Tango/48/places/folder.png" }); this.__assertItemsAndModelLength(list, 5); var titleText = this.getTitleElement(list, 0).innerHTML; this.assertEquals("affe", titleText); this.__cleanUp(list); }, /** Test Case for [BUG #7267] for different length of edited string value. */ testModelChangeStringLength() { var list = this.__createList(function () { return new qx.ui.mobile.list.renderer.Default(); }); this.__assertItemsAndModelLength(list, 5); var newImageSrc = "qx/icon/Tango/52/places/folder.png"; var newTitleText = "Giraffe"; var newSubtitleText = "subtitle1"; list.getModel().setItem(0, { title: newTitleText, subtitle: newSubtitleText, image: newImageSrc }); this.__assertItemsAndModelLength(list, 5); var titleText = this.getTitleElement(list, 0).innerHTML; var subtitleText = this.getSubtitleElement(list, 0).innerHTML; var imageSrc = this.getImageElement(list, 0).src; // VERIFY this.assertEquals(newTitleText, titleText); this.assertEquals(newSubtitleText, subtitleText); this.assertNotEquals("-1", imageSrc.indexOf(newImageSrc)); this.__cleanUp(list); }, testModelChangeAdd() { var list = this.__createList(function () { return new qx.ui.mobile.list.renderer.Default(); }); this.__assertItemsAndModelLength(list, 5); list.getModel().push({ title: "6", subtitle: "6", image: "qx/icon/Tango/48/places/folder.png" }); this.__assertItemsAndModelLength(list, 6); this.__cleanUp(list); }, testExtractRowsToRender() { var list = new qx.ui.mobile.list.List(); this.assertArrayEquals([0], list._extractRowsToRender("0")); this.assertArrayEquals( [0], list._extractRowsToRender("[0].propertyName") ); this.assertArrayEquals( [0, 1, 2], list._extractRowsToRender("[0-2].propertyName") ); this.assertArrayEquals( [12, 13, 14], list._extractRowsToRender("[12-14].propertyName") ); list.destroy(); } } });