@applicaster/zapp-react-dom-app
Version:
Zapp App Component for Applicaster's Quick Brick React Native App
103 lines (77 loc) • 2.98 kB
JavaScript
const { DeviceEventEmitter } = require("../index");
describe("DeviceEventEmitter polyfill", () => {
const listener = jest.fn();
const listener2 = jest.fn();
const listener3 = jest.fn();
const EVENT_1 = "event_1";
const EVENT_2 = "event_2";
beforeEach(() => {
DeviceEventEmitter.reset();
listener.mockClear();
listener2.mockClear();
listener3.mockClear();
});
it("is an object", () => {
expect(DeviceEventEmitter).toHaveProperty("addListener");
expect(DeviceEventEmitter).toHaveProperty("emitEvent");
expect(DeviceEventEmitter.addListener).toBeFunction();
expect(DeviceEventEmitter.emitEvent).toBeFunction();
});
it("adds listeners", () => {
const initialListeners = DeviceEventEmitter.getListeners();
expect(initialListeners).toEqual({});
DeviceEventEmitter.addListener(EVENT_1, listener);
expect(DeviceEventEmitter.getListeners()).toEqual({
[]: [listener],
});
DeviceEventEmitter.addListener(EVENT_1, listener2);
expect(DeviceEventEmitter.getListeners()).toEqual({
[]: [listener2, listener],
});
DeviceEventEmitter.addListener(EVENT_2, listener3);
expect(DeviceEventEmitter.getListeners()).toEqual({
[]: [listener2, listener],
[]: [listener3],
});
});
it("invokes the listeners when an event is being triggered", () => {
const payload = { foo: "bar" };
DeviceEventEmitter.addListener(EVENT_1, listener);
DeviceEventEmitter.addListener(EVENT_1, listener2);
DeviceEventEmitter.addListener(EVENT_2, listener3);
DeviceEventEmitter.emitEvent(EVENT_1, payload);
expect(listener).toHaveBeenCalledWith(payload);
expect(listener2).toHaveBeenCalledWith(payload);
expect(listener3).not.toHaveBeenCalled();
});
it("removes the listener", () => {
const removeListener = DeviceEventEmitter.addListener(EVENT_1, listener);
const removeListener2 = DeviceEventEmitter.addListener(EVENT_1, listener2);
const removeListener3 = DeviceEventEmitter.addListener(EVENT_2, listener3);
expect(removeListener).toHaveProperty("remove");
expect(removeListener.remove).toBeFunction();
expect(removeListener2).toHaveProperty("remove");
expect(removeListener2.remove).toBeFunction();
expect(removeListener3).toHaveProperty("remove");
expect(removeListener3.remove).toBeFunction();
expect(DeviceEventEmitter.getListeners()).toEqual({
[]: [listener2, listener],
[]: [listener3],
});
removeListener.remove();
expect(DeviceEventEmitter.getListeners()).toEqual({
[]: [listener2],
[]: [listener3],
});
removeListener3.remove();
expect(DeviceEventEmitter.getListeners()).toEqual({
[]: [listener2],
[]: [],
});
removeListener2.remove();
expect(DeviceEventEmitter.getListeners()).toEqual({
[]: [],
[]: [],
});
});
});