253 lines
6.7 KiB
JavaScript
253 lines
6.7 KiB
JavaScript
'use strict';
|
|
|
|
const assert = require('assert');
|
|
|
|
const {
|
|
CloseEvent,
|
|
ErrorEvent,
|
|
Event,
|
|
MessageEvent
|
|
} = require('../lib/event-target');
|
|
|
|
describe('Event', () => {
|
|
describe('#ctor', () => {
|
|
it('takes a `type` argument', () => {
|
|
const event = new Event('foo');
|
|
|
|
assert.strictEqual(event.type, 'foo');
|
|
});
|
|
});
|
|
|
|
describe('Properties', () => {
|
|
describe('`target`', () => {
|
|
it('is enumerable and configurable', () => {
|
|
const descriptor = Object.getOwnPropertyDescriptor(
|
|
Event.prototype,
|
|
'target'
|
|
);
|
|
|
|
assert.strictEqual(descriptor.configurable, true);
|
|
assert.strictEqual(descriptor.enumerable, true);
|
|
assert.ok(descriptor.get !== undefined);
|
|
assert.ok(descriptor.set === undefined);
|
|
});
|
|
|
|
it('defaults to `null`', () => {
|
|
const event = new Event('foo');
|
|
|
|
assert.strictEqual(event.target, null);
|
|
});
|
|
});
|
|
|
|
describe('`type`', () => {
|
|
it('is enumerable and configurable', () => {
|
|
const descriptor = Object.getOwnPropertyDescriptor(
|
|
Event.prototype,
|
|
'type'
|
|
);
|
|
|
|
assert.strictEqual(descriptor.configurable, true);
|
|
assert.strictEqual(descriptor.enumerable, true);
|
|
assert.ok(descriptor.get !== undefined);
|
|
assert.ok(descriptor.set === undefined);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('CloseEvent', () => {
|
|
it('inherits from `Event`', () => {
|
|
assert.ok(CloseEvent.prototype instanceof Event);
|
|
});
|
|
|
|
describe('#ctor', () => {
|
|
it('takes a `type` argument', () => {
|
|
const event = new CloseEvent('foo');
|
|
|
|
assert.strictEqual(event.type, 'foo');
|
|
});
|
|
|
|
it('takes an optional `options` argument', () => {
|
|
const event = new CloseEvent('close', {
|
|
code: 1000,
|
|
reason: 'foo',
|
|
wasClean: true
|
|
});
|
|
|
|
assert.strictEqual(event.type, 'close');
|
|
assert.strictEqual(event.code, 1000);
|
|
assert.strictEqual(event.reason, 'foo');
|
|
assert.strictEqual(event.wasClean, true);
|
|
});
|
|
});
|
|
|
|
describe('Properties', () => {
|
|
describe('`code`', () => {
|
|
it('is enumerable and configurable', () => {
|
|
const descriptor = Object.getOwnPropertyDescriptor(
|
|
CloseEvent.prototype,
|
|
'code'
|
|
);
|
|
|
|
assert.strictEqual(descriptor.configurable, true);
|
|
assert.strictEqual(descriptor.enumerable, true);
|
|
assert.ok(descriptor.get !== undefined);
|
|
assert.ok(descriptor.set === undefined);
|
|
});
|
|
|
|
it('defaults to 0', () => {
|
|
const event = new CloseEvent('close');
|
|
|
|
assert.strictEqual(event.code, 0);
|
|
});
|
|
});
|
|
|
|
describe('`reason`', () => {
|
|
it('is enumerable and configurable', () => {
|
|
const descriptor = Object.getOwnPropertyDescriptor(
|
|
CloseEvent.prototype,
|
|
'reason'
|
|
);
|
|
|
|
assert.strictEqual(descriptor.configurable, true);
|
|
assert.strictEqual(descriptor.enumerable, true);
|
|
assert.ok(descriptor.get !== undefined);
|
|
assert.ok(descriptor.set === undefined);
|
|
});
|
|
|
|
it('defaults to an empty string', () => {
|
|
const event = new CloseEvent('close');
|
|
|
|
assert.strictEqual(event.reason, '');
|
|
});
|
|
});
|
|
|
|
describe('`wasClean`', () => {
|
|
it('is enumerable and configurable', () => {
|
|
const descriptor = Object.getOwnPropertyDescriptor(
|
|
CloseEvent.prototype,
|
|
'wasClean'
|
|
);
|
|
|
|
assert.strictEqual(descriptor.configurable, true);
|
|
assert.strictEqual(descriptor.enumerable, true);
|
|
assert.ok(descriptor.get !== undefined);
|
|
assert.ok(descriptor.set === undefined);
|
|
});
|
|
|
|
it('defaults to false', () => {
|
|
const event = new CloseEvent('close');
|
|
|
|
assert.strictEqual(event.wasClean, false);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('ErrorEvent', () => {
|
|
it('inherits from `Event`', () => {
|
|
assert.ok(ErrorEvent.prototype instanceof Event);
|
|
});
|
|
|
|
describe('#ctor', () => {
|
|
it('takes a `type` argument', () => {
|
|
const event = new ErrorEvent('foo');
|
|
|
|
assert.strictEqual(event.type, 'foo');
|
|
});
|
|
|
|
it('takes an optional `options` argument', () => {
|
|
const error = new Error('Oops');
|
|
const event = new ErrorEvent('error', { error, message: error.message });
|
|
|
|
assert.strictEqual(event.type, 'error');
|
|
assert.strictEqual(event.error, error);
|
|
assert.strictEqual(event.message, error.message);
|
|
});
|
|
});
|
|
|
|
describe('Properties', () => {
|
|
describe('`error`', () => {
|
|
it('is enumerable and configurable', () => {
|
|
const descriptor = Object.getOwnPropertyDescriptor(
|
|
ErrorEvent.prototype,
|
|
'error'
|
|
);
|
|
|
|
assert.strictEqual(descriptor.configurable, true);
|
|
assert.strictEqual(descriptor.enumerable, true);
|
|
assert.ok(descriptor.get !== undefined);
|
|
assert.ok(descriptor.set === undefined);
|
|
});
|
|
|
|
it('defaults to `null`', () => {
|
|
const event = new ErrorEvent('error');
|
|
|
|
assert.strictEqual(event.error, null);
|
|
});
|
|
});
|
|
|
|
describe('`message`', () => {
|
|
it('is enumerable and configurable', () => {
|
|
const descriptor = Object.getOwnPropertyDescriptor(
|
|
ErrorEvent.prototype,
|
|
'message'
|
|
);
|
|
|
|
assert.strictEqual(descriptor.configurable, true);
|
|
assert.strictEqual(descriptor.enumerable, true);
|
|
assert.ok(descriptor.get !== undefined);
|
|
assert.ok(descriptor.set === undefined);
|
|
});
|
|
|
|
it('defaults to an empty string', () => {
|
|
const event = new ErrorEvent('error');
|
|
|
|
assert.strictEqual(event.message, '');
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('MessageEvent', () => {
|
|
it('inherits from `Event`', () => {
|
|
assert.ok(MessageEvent.prototype instanceof Event);
|
|
});
|
|
|
|
describe('#ctor', () => {
|
|
it('takes a `type` argument', () => {
|
|
const event = new MessageEvent('foo');
|
|
|
|
assert.strictEqual(event.type, 'foo');
|
|
});
|
|
|
|
it('takes an optional `options` argument', () => {
|
|
const event = new MessageEvent('message', { data: 'bar' });
|
|
|
|
assert.strictEqual(event.type, 'message');
|
|
assert.strictEqual(event.data, 'bar');
|
|
});
|
|
});
|
|
|
|
describe('Properties', () => {
|
|
describe('`data`', () => {
|
|
it('is enumerable and configurable', () => {
|
|
const descriptor = Object.getOwnPropertyDescriptor(
|
|
MessageEvent.prototype,
|
|
'data'
|
|
);
|
|
|
|
assert.strictEqual(descriptor.configurable, true);
|
|
assert.strictEqual(descriptor.enumerable, true);
|
|
assert.ok(descriptor.get !== undefined);
|
|
assert.ok(descriptor.set === undefined);
|
|
});
|
|
|
|
it('defaults to `null`', () => {
|
|
const event = new MessageEvent('message');
|
|
|
|
assert.strictEqual(event.data, null);
|
|
});
|
|
});
|
|
});
|
|
});
|