diff options
| author | ruki <waruqi@gmail.com> | 2018-11-08 00:38:48 +0800 |
|---|---|---|
| committer | ruki <waruqi@gmail.com> | 2018-11-07 21:53:09 +0800 |
| commit | 26105034da4fcce7ac883c899d781f016559310d (patch) | |
| tree | c459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/delegate/test/closest.js | |
| parent | 2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff) | |
| download | xmake-docs-26105034da4fcce7ac883c899d781f016559310d.tar.gz xmake-docs-26105034da4fcce7ac883c899d781f016559310d.zip | |
switch to vuepress
Diffstat (limited to 'node_modules/delegate/test/closest.js')
| -rw-r--r-- | node_modules/delegate/test/closest.js | 45 |
1 files changed, 45 insertions, 0 deletions
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 = '<div id="a">' + + '<div id="b">' + + '<div id="c"></div>' + + '</div>' + + '</div>'; + + 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(); + } + }); +}); |
