dom-delegator
Version:
Decorate elements with delegated events
57 lines (40 loc) • 1.2 kB
JavaScript
var test = require("tape")
var setImmediate = require("timers").setImmediate
var Document = require("global/document").constructor
var h = require("./lib/h.js")
var createEvent = require("./lib/create-event.js")
var addEvent = require("../add-event.js")
var Delegator = require("../dom-delegator.js")
test("unlistening to event", function (assert) {
var elem = h("div")
var doc = new Document()
doc.body.appendChild(elem)
var d = Delegator(doc)
d.listenTo("click")
var values = []
var fn = function (ev) {
values.push(ev)
}
addEvent(elem, "click", fn)
d.unlistenTo("click")
assert.throws(function () {
d.unlistenTo("click")
})
var ev = createEvent("click")
elem.dispatchEvent(ev)
setImmediate(function () {
assert.equal(values.length, 0)
doc.body.removeChild(elem)
assert.end()
})
})
test("delegator throws if mutated manually", function (assert) {
var d = Delegator()
d.listenTo("foobar")
// NAUGHTY MUTATE
d.rawEventListeners.foobar = null
assert.throws(function () {
d.unlistenTo("foobar")
}, /cannot unlisten to foobar/)
assert.end()
})