UNPKG

@applicaster/zapp-react-dom-app

Version:

Zapp App Component for Applicaster's Quick Brick React Native App

103 lines (77 loc) 2.98 kB
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({ [EVENT_1]: [listener], }); DeviceEventEmitter.addListener(EVENT_1, listener2); expect(DeviceEventEmitter.getListeners()).toEqual({ [EVENT_1]: [listener2, listener], }); DeviceEventEmitter.addListener(EVENT_2, listener3); expect(DeviceEventEmitter.getListeners()).toEqual({ [EVENT_1]: [listener2, listener], [EVENT_2]: [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({ [EVENT_1]: [listener2, listener], [EVENT_2]: [listener3], }); removeListener.remove(); expect(DeviceEventEmitter.getListeners()).toEqual({ [EVENT_1]: [listener2], [EVENT_2]: [listener3], }); removeListener3.remove(); expect(DeviceEventEmitter.getListeners()).toEqual({ [EVENT_1]: [listener2], [EVENT_2]: [], }); removeListener2.remove(); expect(DeviceEventEmitter.getListeners()).toEqual({ [EVENT_1]: [], [EVENT_2]: [], }); }); });