UNPKG

@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
"use strict"; 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); }); });