[6a3a178] | 1 |
|
---|
| 2 | var assert = require('assert');
|
---|
| 3 | var CE = require('../');
|
---|
| 4 |
|
---|
| 5 | describe('CustomEvent', function () {
|
---|
| 6 |
|
---|
| 7 | describe('new CustomEvent()', function () {
|
---|
| 8 |
|
---|
| 9 | it('should create a `CustomEvent` instance', function () {
|
---|
| 10 | var e = new CE('cat');
|
---|
| 11 |
|
---|
| 12 | assert.equal(e.type, 'cat');
|
---|
| 13 | assert.equal(e.bubbles, false);
|
---|
| 14 | assert.equal(e.cancelable, false);
|
---|
| 15 | assert.equal(e.detail, undefined);
|
---|
| 16 | });
|
---|
| 17 |
|
---|
| 18 | it('should create a `CustomEvent` instance with a `details` object', function () {
|
---|
| 19 | var e = new CE('meow', { detail: { foo: 'bar' } });
|
---|
| 20 |
|
---|
| 21 | assert.equal(e.type, 'meow');
|
---|
| 22 | assert.equal(e.bubbles, false);
|
---|
| 23 | assert.equal(e.cancelable, false);
|
---|
| 24 | assert.equal(e.detail.foo, 'bar');
|
---|
| 25 | });
|
---|
| 26 |
|
---|
| 27 | it('should create a `CustomEvent` instance with a `bubbles` boolean', function () {
|
---|
| 28 | var e = new CE('purr', { bubbles: true });
|
---|
| 29 |
|
---|
| 30 | assert.equal(e.type, 'purr');
|
---|
| 31 | assert.equal(e.bubbles, true);
|
---|
| 32 | assert.equal(e.cancelable, false);
|
---|
| 33 | assert.equal(e.detail, undefined);
|
---|
| 34 | });
|
---|
| 35 |
|
---|
| 36 | it('should create a `CustomEvent` instance with a `cancelable` boolean', function () {
|
---|
| 37 | var e = new CE('scratch', { cancelable: true });
|
---|
| 38 |
|
---|
| 39 | assert.equal(e.type, 'scratch');
|
---|
| 40 | assert.equal(e.bubbles, false);
|
---|
| 41 | assert.equal(e.cancelable, true);
|
---|
| 42 | assert.equal(e.detail, undefined);
|
---|
| 43 | });
|
---|
| 44 |
|
---|
| 45 | it('should create a `CustomEvent` instance that is dispatchable', function (done) {
|
---|
| 46 | var e = new CE('claw', {
|
---|
| 47 | bubbles: true,
|
---|
| 48 | cancelable: true,
|
---|
| 49 | detail: { canhaz: 'cheeseburger' }
|
---|
| 50 | });
|
---|
| 51 |
|
---|
| 52 | function onclaw (ev) {
|
---|
| 53 | if (!ev) ev = window.event;
|
---|
| 54 | assert.equal(e.bubbles, true);
|
---|
| 55 | assert.equal(e.cancelable, true);
|
---|
| 56 | assert.equal(e.detail.canhaz, 'cheeseburger');
|
---|
| 57 | done();
|
---|
| 58 | }
|
---|
| 59 |
|
---|
| 60 | if (document.body.dispatchEvent) {
|
---|
| 61 | document.body.addEventListener('claw', onclaw, false);
|
---|
| 62 | document.body.dispatchEvent(e);
|
---|
| 63 | } else {
|
---|
| 64 | // IE <= 8 will only allow us to fire "known" event names,
|
---|
| 65 | // so we need to fire "click" instead of "claw :\
|
---|
| 66 | document.body.attachEvent('onclick', onclaw);
|
---|
| 67 |
|
---|
| 68 | // need to fire event in a separate tick for some reason…
|
---|
| 69 | setTimeout(function () {
|
---|
| 70 | e.type = 'click';
|
---|
| 71 | e.eventName = 'click';
|
---|
| 72 | e.eventType = 'click';
|
---|
| 73 |
|
---|
| 74 | document.body.fireEvent('onclick', e);
|
---|
| 75 | }, 50);
|
---|
| 76 | }
|
---|
| 77 | });
|
---|
| 78 |
|
---|
| 79 | });
|
---|
| 80 |
|
---|
| 81 | });
|
---|