From 26105034da4fcce7ac883c899d781f016559310d Mon Sep 17 00:00:00 2001 From: ruki Date: Thu, 8 Nov 2018 00:38:48 +0800 Subject: switch to vuepress --- node_modules/delegate/test/closest.js | 45 +++++++++++++ node_modules/delegate/test/delegate.js | 116 +++++++++++++++++++++++++++++++++ 2 files changed, 161 insertions(+) create mode 100644 node_modules/delegate/test/closest.js create mode 100644 node_modules/delegate/test/delegate.js (limited to 'node_modules/delegate/test') diff --git a/node_modules/delegate/test/closest.js b/node_modules/delegate/test/closest.js new file mode 100644 index 00000000..6a9e25f9 --- /dev/null +++ b/node_modules/delegate/test/closest.js @@ -0,0 +1,45 @@ +var closest = require('../src/closest'); + +describe('closest', function() { + before(function() { + var html = '
' + + '
' + + '
' + + '
' + + '
'; + + document.body.innerHTML += html; + + global.a = document.querySelector('#a'); + global.b = document.querySelector('#b'); + global.c = document.querySelector('#c'); + }); + + after(function() { + document.body.innerHTML = ''; + }); + + it('should return the closest parent based on the selector', function() { + assert.ok(closest(global.c, '#b'), global.b); + assert.ok(closest(global.c, '#a'), global.a); + assert.ok(closest(global.b, '#a'), global.a); + }); + + it('should return itself if the same selector is passed', function() { + assert.ok(closest(document.body, 'body'), document.body); + }); + + it('should not throw on elements without matches()', function() { + var fakeElement = { + nodeType: -1, // anything but DOCUMENT_NODE_TYPE + parentNode: null, + matches: undefined // undefined to emulate Elements without this function + }; + + try { + closest(fakeElement, '#a') + } catch (err) { + assert.fail(); + } + }); +}); diff --git a/node_modules/delegate/test/delegate.js b/node_modules/delegate/test/delegate.js new file mode 100644 index 00000000..669738f6 --- /dev/null +++ b/node_modules/delegate/test/delegate.js @@ -0,0 +1,116 @@ +var delegate = require('../src/delegate'); +var simulant = require('simulant'); + +describe('delegate', function() { + before(function() { + var html = ''; + + document.body.innerHTML += html; + + global.container = document.querySelector('ul'); + global.anchor = document.querySelector('a'); + + global.spy = sinon.spy(global.container, 'removeEventListener'); + }); + + after(function() { + global.spy.restore(); + document.body.innerHTML = ''; + }); + + it('should add an event listener', function(done) { + delegate(global.container, 'a', 'click', function() { + done(); + }); + + simulant.fire(global.anchor, simulant('click')); + }); + + it('should remove an event listener', function() { + var delegation = delegate(global.container, 'a', 'click', function() {}); + + delegation.destroy(); + assert.ok(global.spy.calledOnce); + }); + + it('should use `document` if the element is unspecified', function(done) { + delegate('a', 'click', function() { + done(); + }); + + simulant.fire(global.anchor, simulant('click')); + }); + + it('should remove an event listener the unspecified base (`document`)', function() { + var delegation = delegate('a', 'click', function() {}); + var spy = sinon.spy(document, 'removeEventListener'); + + delegation.destroy(); + assert.ok(spy.calledOnce); + + spy.restore(); + }); + + it('should add event listeners to all the elements in a base selector', function() { + var spy = sinon.spy(); + delegate('li', 'a', 'click', spy); + + var anchors = document.querySelectorAll('a'); + simulant.fire(anchors[0], simulant('click')); + simulant.fire(anchors[1], simulant('click')); + assert.ok(spy.calledTwice); + }); + + it('should remove the event listeners from all the elements in a base selector', function() { + var items = document.querySelectorAll('li') + var spies = Array.prototype.map.call(items, function (li) { + return sinon.spy(li, 'removeEventListener'); + }); + + var delegations = delegate('li', 'a', 'click', function() {}); + delegations.forEach(function (delegation) { + delegation.destroy(); + }); + + spies.every(function (spy) { + var success = spy.calledOnce; + spy.restore(); + return success; + }); + }); + + it('should add event listeners to all the elements in a base array', function() { + var spy = sinon.spy(); + var items = document.querySelectorAll('li') + delegate(items, 'a', 'click', spy); + + var anchors = document.querySelectorAll('a') + simulant.fire(anchors[0], simulant('click')); + simulant.fire(anchors[1], simulant('click')); + assert.ok(spy.calledTwice); + }); + + it('should remove the event listeners from all the elements in a base array', function() { + var items = document.querySelectorAll('li') + var spies = Array.prototype.map.call(items, function (li) { + return sinon.spy(li, 'removeEventListener'); + }); + + var delegations = delegate(items, 'a', 'click', function() {}); + delegations.forEach(function (delegation) { + delegation.destroy(); + }); + + spies.every(function (spy) { + var success = spy.calledOnce; + spy.restore(); + return success; + }); + }); +}); -- cgit v1.2.3