From e40c5ef5d3336ee816beffef0bd0cc17906b571b Mon Sep 17 00:00:00 2001 From: ben hockey Date: Tue, 1 Jul 2014 10:23:32 -0500 Subject: [PATCH] add failing tests for event delegation --- test/dom-delegation.js | 65 ++++++++++++++++++++++++++++++++++++++++++ test/index.js | 1 + 2 files changed, 66 insertions(+) create mode 100644 test/dom-delegation.js diff --git a/test/dom-delegation.js b/test/dom-delegation.js new file mode 100644 index 0000000..17cf1fc --- /dev/null +++ b/test/dom-delegation.js @@ -0,0 +1,65 @@ +var test = require("tape") +var setImmediate = require("timers").setImmediate +var document = require("global/document") + +var h = require("./lib/h.js") +var createEvent = require("./lib/create-event.js") + +var addEvent = require("../add-event.js") +var Delegator = require("../index.js") + +test("delegated listeners are called", function (assert) { + var parent = h("div", [ h("div") ]) + var child = parent.childNodes[0] + document.body.appendChild(parent) + + Delegator() + var values = [] + + function fn(ev) { + values.push(ev) + } + + addEvent(parent, "click", fn) + addEvent(child, "click", fn) + + var ev = createEvent("click") + child.dispatchEvent(ev) + + setImmediate(function () { + assert.equal(values.length, 2) + assert.equal(values[0].currentTarget, child) + assert.equal(values[1].currentTarget, parent) + + document.body.removeChild(parent) + assert.end() + }) +}) + +test("all handler does not prevent delegation", function (assert) { + var parent = h("div", [ h("div") ]) + var child = parent.childNodes[0] + document.body.appendChild(parent) + + Delegator() + var values = [] + + function fn(ev) { + values.push(ev) + } + + addEvent(parent, "click", fn) + addEvent(child, "event", fn) + + var ev = createEvent("click") + child.dispatchEvent(ev) + + setImmediate(function () { + assert.equal(values.length, 2) + assert.equal(values[0].currentTarget, child) + assert.equal(values[1].currentTarget, parent) + + document.body.removeChild(parent) + assert.end() + }) +}) diff --git a/test/index.js b/test/index.js index 1c43c3f..b08299d 100644 --- a/test/index.js +++ b/test/index.js @@ -7,3 +7,4 @@ require("./dom-data-events.js") require("./dom-duplicate-event.js") require("./dom-unlisten-to.js") require("./dom-global-listeners.js") +require("./dom-delegation.js")