@roderickhsiao/react-i13n
Version:
[Experiment] React I13n provides a performant and scalable solution to application instrumentation.
110 lines (103 loc) • 3.88 kB
JavaScript
;
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);
});
});
});