82 lines
2.3 KiB
JavaScript
82 lines
2.3 KiB
JavaScript
|
|
var assert = require('assert');
|
|
var CE = require('../');
|
|
|
|
describe('CustomEvent', function () {
|
|
|
|
describe('new CustomEvent()', function () {
|
|
|
|
it('should create a `CustomEvent` instance', function () {
|
|
var e = new CE('cat');
|
|
|
|
assert.equal(e.type, 'cat');
|
|
assert.equal(e.bubbles, false);
|
|
assert.equal(e.cancelable, false);
|
|
assert.equal(e.detail, undefined);
|
|
});
|
|
|
|
it('should create a `CustomEvent` instance with a `details` object', function () {
|
|
var e = new CE('meow', { detail: { foo: 'bar' } });
|
|
|
|
assert.equal(e.type, 'meow');
|
|
assert.equal(e.bubbles, false);
|
|
assert.equal(e.cancelable, false);
|
|
assert.equal(e.detail.foo, 'bar');
|
|
});
|
|
|
|
it('should create a `CustomEvent` instance with a `bubbles` boolean', function () {
|
|
var e = new CE('purr', { bubbles: true });
|
|
|
|
assert.equal(e.type, 'purr');
|
|
assert.equal(e.bubbles, true);
|
|
assert.equal(e.cancelable, false);
|
|
assert.equal(e.detail, undefined);
|
|
});
|
|
|
|
it('should create a `CustomEvent` instance with a `cancelable` boolean', function () {
|
|
var e = new CE('scratch', { cancelable: true });
|
|
|
|
assert.equal(e.type, 'scratch');
|
|
assert.equal(e.bubbles, false);
|
|
assert.equal(e.cancelable, true);
|
|
assert.equal(e.detail, undefined);
|
|
});
|
|
|
|
it('should create a `CustomEvent` instance that is dispatchable', function (done) {
|
|
var e = new CE('claw', {
|
|
bubbles: true,
|
|
cancelable: true,
|
|
detail: { canhaz: 'cheeseburger' }
|
|
});
|
|
|
|
function onclaw (ev) {
|
|
if (!ev) ev = window.event;
|
|
assert.equal(e.bubbles, true);
|
|
assert.equal(e.cancelable, true);
|
|
assert.equal(e.detail.canhaz, 'cheeseburger');
|
|
done();
|
|
}
|
|
|
|
if (document.body.dispatchEvent) {
|
|
document.body.addEventListener('claw', onclaw, false);
|
|
document.body.dispatchEvent(e);
|
|
} else {
|
|
// IE <= 8 will only allow us to fire "known" event names,
|
|
// so we need to fire "click" instead of "claw :\
|
|
document.body.attachEvent('onclick', onclaw);
|
|
|
|
// need to fire event in a separate tick for some reason…
|
|
setTimeout(function () {
|
|
e.type = 'click';
|
|
e.eventName = 'click';
|
|
e.eventType = 'click';
|
|
|
|
document.body.fireEvent('onclick', e);
|
|
}, 50);
|
|
}
|
|
});
|
|
|
|
});
|
|
|
|
});
|