UNPKG

@roderickhsiao/react-i13n

Version:

[Experiment] React I13n provides a performant and scalable solution to application instrumentation.

110 lines (103 loc) 3.88 kB
"use strict"; var _EventsQueue = _interopRequireDefault(require("../EventsQueue")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } /** * Copyright 2020, Yahoo! Inc. * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. */ /* globals describe, it */ describe('EventsQueue', function () { it('should be created correctly', function () { var testPlugin = { name: 'test', eventHandlers: {} }; var eventsQueue = new _EventsQueue["default"](testPlugin); expect(eventsQueue._plugin).toEqual(testPlugin); expect(eventsQueue._pendingCallbacks).toEqual([]); expect(eventsQueue._pendingEventsCount).toEqual(0); }); it('should execute event correctly', function (done) { var testPlugin = { name: 'test', eventHandlers: { click: function click(payload, callback) { expect(typeof payload).toEqual('object'); callback(); } } }; var eventsQueue = new _EventsQueue["default"](testPlugin); eventsQueue.executeEvent('click', {}, function () { // after events are executed, the pending evnets should be empty expect(eventsQueue._pendingCallbacks.length).toEqual(0); expect(eventsQueue._pendingEventsCount).toEqual(0); done(); }); }); it('should execute event correctly event if there is fatal error in the handler', function (done) { var testPlugin = { name: 'test', eventHandlers: { click: function click(payload, callback) { payload.a.b.c = null; // should be fatal error callback(); } } }; var eventsQueue = new _EventsQueue["default"](testPlugin); // the reject function will be executed eventsQueue.executeEvent('click', {}, null, function () { // after events are executed, the pending evnets should be empty expect(eventsQueue._pendingCallbacks.length).toEqual(0); expect(eventsQueue._pendingEventsCount).toEqual(0); done(); }); }); it('should execute event correctly event if no handler defined', function (done) { var testPlugin = { name: 'test', eventHandlers: { click: function click(payload, callback) { callback(); } } }; var eventsQueue = new _EventsQueue["default"](testPlugin); eventsQueue.executeEvent('pageview', {}, function () { // after events are executed, the pending evnets should be empty expect(eventsQueue._pendingCallbacks.length).toEqual(0); expect(eventsQueue._pendingEventsCount).toEqual(0); done(); }); }); it('should execute event correctly and all events can be executed completely', function (done) { var testPlugin = { name: 'test', eventHandlers: { click: function click(payload, callback) { expect(typeof payload).toEqual('object'); callback(); }, updated: function updated(payload, callback) { setTimeout(function () { // the pending events should be executed either expect(typeof payload).toEqual('object'); callback(); }, 200); } } }; var eventsQueue = new _EventsQueue["default"](testPlugin); eventsQueue.executeEvent('updated', {}, function () { // after events are executed, the pending evnets should be empty expect(eventsQueue._pendingCallbacks.length).toEqual(1); // should have callback for click not executed yet expect(eventsQueue._pendingEventsCount).toEqual(0); done(); }); eventsQueue.executeEvent('click', {}, function () { // after events are executed, the pending evnets should be empty expect(eventsQueue._pendingCallbacks.length).toEqual(0); expect(eventsQueue._pendingEventsCount).toEqual(0); }); }); });