UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

159 lines (127 loc) 4.82 kB
/* ************************************************************************ qooxdoo - the new era of web development http://qooxdoo.org Copyright: 2007-2012 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: * Martin Wittemann (wittemann) ************************************************************************ */ qx.Class.define("qx.test.event.Messaging", { extend : qx.dev.unit.TestCase, include : qx.dev.unit.MMock, members : { __m : null, setUp : function() { this.__m = new qx.event.Messaging(); }, testTwoChannels : function() { var handlerGet = this.spy(); var handlerPost = this.spy(); var ctx = {a: 12}; var data = {data: "test"}; this.__m.on("GET", "/get", handlerGet, ctx); this.__m.emit("GET", "/get", null, data); this.assertCalledOnce(handlerGet); this.assertCalledOn(handlerGet, ctx); this.assertCalledWith(handlerGet, {customData: data, params: {}, path: "/get"}); this.assertNotCalled(handlerPost); this.__m.on("POST", "/post", handlerPost, ctx); this.__m.emit("POST", "/post", null, data); this.assertCalledOnce(handlerPost); this.assertCalledOn(handlerPost, ctx); this.assertCalledWith(handlerPost, {customData: data, params: {}, path: "/post"}); this.assertCalledOnce(handlerGet); }, testGet : function() { var handler = this.spy(); var ctx = {a: 12}; var data = {data: "test"}; this.__m.on("get", "/", handler, ctx); this.__m.emit("get", "/", null, data); this.assertCalledOnce(handler); this.assertCalledOn(handler, ctx); this.assertCalledWith(handler, {customData: data, params: {}, path: "/"}); }, testRegExp : function() { var handler = this.spy(); var ctx = {a: 12}; var data = {data: "abcdef"}; this.__m.on("xyz", /^xyz/g, handler, ctx); this.__m.emit("xyz", "xyzabc", null, data); this.__m.emit("xyz", "abcxyz", null, data); this.assertCalledOnce(handler); this.assertCalledOn(handler, ctx); this.assertCalledWith(handler, {customData: data, params: {}, path: "xyzabc"}); }, testGetAll : function() { var handler = this.spy(); this.__m.on("a", /.*/, handler); this.__m.emit("a", "xyzabc"); this.__m.emit("a", "abcxyz"); this.assertCalledTwice(handler); }, testAny : function() { var handler = this.spy(); this.__m.onAny(/.*/, handler); this.__m.emit("a", "xyzabc"); this.__m.emit("b", "abcxyz"); this.assertCalledTwice(handler); }, testTwice : function() { var handler = this.spy(); var ctx = {a: 12}; var data = {data: "test"}; this.__m.on("GET", "/", handler, ctx); this.__m.emit("GET", "/", null, data); this.__m.emit("GET", "/", null, data); this.assertCalledTwice(handler); this.assertCalledOn(handler, ctx); this.assertCalledWith(handler, {customData: data, params: {}, path: "/"}); }, testParam : function() { var handler = this.spy(); var ctx = {a: 12}; var data = {data: "test"}; this.__m.on("POST", "/{id}/affe", handler, ctx); this.__m.emit("POST", "/123456/affe", data); this.assertCalledOnce(handler); this.assertCalledOn(handler, ctx); this.assertCalledWith(handler, {customData: undefined, params: {id: "123456", data: "test"}, path: "/123456/affe"} ); }, testMultipleParam : function() { var handler = this.spy(); var data = {data: "test"}; this.__m.on("POST", "/{id}-{name}/affe", handler); this.__m.emit("POST", "/123456-xyz/affe", data); this.assertCalledOnce(handler); this.assertCalledWith(handler, {customData: undefined, params: {id: "123456", name: "xyz", data: "test"}, path: "/123456-xyz/affe"} ); }, testRemove : function() { var handler = this.spy(); var id = this.__m.on("GET", "/", handler); this.__m.emit("GET", "/"); this.assertCalledOnce(handler); this.__m.remove(id); this.__m.emit("GET", "/"); this.assertCalledOnce(handler); }, testHas : function() { this.__m.on("GET", "/affe", function() {}); this.__m.on("POST", "/affe", function() {}); this.assertTrue(this.__m.has("GET", "/affe")); this.assertTrue(this.__m.has("POST", "/affe")); this.assertFalse(this.__m.has("get", "/affe")); this.assertFalse(this.__m.has("GET", "/banane")); this.assertFalse(this.__m.has("PUT", "/affe")); this.assertFalse(this.__m.has("banane", "/affe")); } } });