You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.3 KiB
45 lines
1.3 KiB
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(); |
|
} |
|
}); |
|
});
|
|
|