UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

189 lines (145 loc) 5.82 kB
/* ************************************************************************ qooxdoo - the new era of web development http://qooxdoo.org Copyright: 2007-2010 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: * Fabian Jakobs (fjakobs) ************************************************************************ */ qx.Class.define("qx.test.bom.element.Class", { extend : qx.dev.unit.TestCase, members : { setUp : function() { var div = document.createElement("div"); div.id = "el"; this._el = div; document.body.appendChild(div); }, tearDown : function() { document.body.removeChild(this._el); this._el = null; }, "test: get should return the className for svg element" : function() { if(document.createElementNS){ var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); svg.setAttribute('id','svgEl'); svg.setAttribute('class','svgclassname'); document.body.appendChild(svg); var Class = qx.bom.element.Class; this.assertEquals("svgclassname", Class.get(svg)); document.body.removeChild(svg); } }, "test: get on new element should return empty string" : function() { var Class = qx.bom.element.Class; this.assertEquals("", Class.get(this._el)); }, "test: get should return the className" : function() { var Class = qx.bom.element.Class; this._el.className = "juhu kinners"; this.assertEquals("juhu kinners", Class.get(this._el)); }, "test: add() on new element should set the class name" : function() { var Class = qx.bom.element.Class; this.assertEquals("juhu", Class.add(this._el, "juhu")); this.assertEquals("juhu", Class.get(this._el)); }, "test: add() on element with class should not set it again" : function() { var Class = qx.bom.element.Class; Class.add(this._el, "juhu"); Class.add(this._el, "juhu"); this.assertEquals("juhu", Class.get(this._el)); }, "test: addClasses() on new element should set multiple classes" : function() { var Class = qx.bom.element.Class; this.assertEquals("juhu kinners", Class.addClasses(this._el, ["juhu", "kinners"])); this.assertEquals("juhu kinners", Class.get(this._el)); }, "test: addClasses() should ignore class names, which are already set" : function() { var Class = qx.bom.element.Class; Class.addClasses(this._el, ["juhu", "kinners"]); Class.addClasses(this._el, ["juhu"]); Class.addClasses(this._el, ["kinners"]); this.assertEquals("juhu kinners", Class.get(this._el)); }, "test: has()" : function() { var Class = qx.bom.element.Class; this.assertFalse(Class.has(this._el, "juhu")); Class.addClasses(this._el, ["juhu", "kinners"]); this.assertTrue(Class.has(this._el, "juhu")); this.assertTrue(Class.has(this._el, "kinners")); this.assertFalse(Class.has(this._el, "foo")); }, "test: remove() non existing class should be ignored" : function() { var Class = qx.bom.element.Class; this.assertEquals("", Class.get(this._el)); this.assertEquals("juhu", Class.remove(this._el, "juhu")); this.assertEquals("", Class.get(this._el)); }, "test: remove() existing classes" : function() { var Class = qx.bom.element.Class; Class.addClasses(this._el, ["juhu", "kinners"]); this.assertEquals("juhu", Class.remove(this._el, "juhu")); this.assertMatch(Class.get(this._el), /\s*kinners\s*/); this.assertEquals("kinners", Class.remove(this._el, "kinners")); this.assertEquals("", Class.get(this._el)); }, "test: removeClasses() to remove several classes at once" : function() { var Class = qx.bom.element.Class; Class.addClasses(this._el, ["a", "juhu", "b", "kinners", "c"]); this.assertEquals("a b c", Class.removeClasses(this._el, ["kinners", "juhu"])); this.assertEquals("a b c", Class.get(this._el)); }, "test: replace()" : function() { var Class = qx.bom.element.Class; Class.addClasses(this._el, ["juhu", "kinners"]); this.assertEquals("foo", Class.replace(this._el, "juhu", "foo")); this.assertFalse(Class.has(this._el, "juhu")); this.assertTrue(Class.has(this._el, "foo")); this.assertTrue(Class.has(this._el, "kinners")); this.assertEquals("bar", Class.replace(this._el, "kinners", "bar")); this.assertFalse(Class.has(this._el, "juhu")); this.assertFalse(Class.has(this._el, "kinners")); this.assertTrue(Class.has(this._el, "foo")); this.assertTrue(Class.has(this._el, "bar")); this.assertEquals("", Class.replace(this._el, "i-dont-exist", "baz")); this.assertFalse(Class.has(this._el, "juhu")); this.assertFalse(Class.has(this._el, "kinners")); this.assertTrue(Class.has(this._el, "foo")); this.assertTrue(Class.has(this._el, "bar")); this.assertFalse(Class.has(this._el, "baz")); }, "test: toggle() non existing class should add it" : function() { var Class = qx.bom.element.Class; this.assertEquals("juhu", Class.toggle(this._el, "juhu")); this.assertEquals("juhu", Class.get(this._el)); }, "test: toggle() existing class name should remove it" : function() { var Class = qx.bom.element.Class; Class.addClasses(this._el, ["juhu", "kinners"]); this.assertEquals("juhu", Class.toggle(this._el, "juhu")); this.assertMatch(Class.get(this._el), /\s*kinners\s*/); } } });