@enact/core
Version:
Enact is an open source JavaScript framework containing everything you need to create a fast, scalable mobile or web application.
65 lines (64 loc) • 2.61 kB
JavaScript
;
var _dispatcher = require("../dispatcher");
describe('dispatcher', function () {
test('should register handlers on target', function () {
var handler = jest.fn();
(0, _dispatcher.on)('localechange', handler, window);
var ev = new window.CustomEvent('localechange', {});
window.dispatchEvent(ev);
var expected = 1;
expect(handler).toHaveBeenCalledTimes(expected);
});
test('should not register duplicate handlers on target', function () {
var handler = jest.fn();
(0, _dispatcher.on)('localechange', handler, window);
(0, _dispatcher.on)('localechange', handler, window);
var ev = new window.CustomEvent('localechange', {});
window.dispatchEvent(ev);
var expected = 1;
expect(handler).toHaveBeenCalledTimes(expected);
});
test('should unregister handlers on target', function () {
var handler = jest.fn();
(0, _dispatcher.on)('localechange', handler, window);
var ev = new window.CustomEvent('localechange', {});
window.dispatchEvent(ev);
(0, _dispatcher.off)('localechange', handler, window);
window.dispatchEvent(ev);
var expected = 1;
expect(handler).toHaveBeenCalledTimes(expected);
});
test('should only call a "once" handler once', function () {
var handler = jest.fn();
(0, _dispatcher.once)('localechange', handler, window);
var ev = new window.CustomEvent('localechange', {});
window.dispatchEvent(ev);
window.dispatchEvent(ev);
var expected = 1;
expect(handler).toHaveBeenCalledTimes(expected);
});
test('should allow unregistering a "once" before it is called', function () {
var handler = jest.fn();
var onceHandler = (0, _dispatcher.once)('localechange', handler, window);
(0, _dispatcher.off)('localechange', onceHandler, window);
var ev = new window.CustomEvent('localechange', {});
window.dispatchEvent(ev);
expect(handler).not.toHaveBeenCalled();
});
test('should not block subsequent handlers when a handler throws', function () {
// Modify the console spy to silence error output with
// an empty mock implementation
// eslint-disable-next-line no-console
console.error.mockImplementation();
var _throws = function _throws() {
throw new Error('Thrown from handler');
};
var handler = jest.fn();
(0, _dispatcher.on)('localechange', _throws, window);
(0, _dispatcher.on)('localechange', handler, window);
var ev = new window.CustomEvent('localechange', {});
window.dispatchEvent(ev);
var expected = 1;
expect(handler).toHaveBeenCalledTimes(expected);
});
});