UNPKG

@applicaster/zapp-react-native-ui-components

Version:

Applicaster Zapp React Native ui components for the Quick Brick App

73 lines (60 loc) 2.25 kB
import * as React from "react"; import { renderHook } from "@testing-library/react-hooks"; import { ViewportEvents, useViewportEventsContext, ViewportEventContext, } from "../index"; const event = { foo: "bar", }; const viewportEventsManager = new ViewportEvents(true); describe("ViewportEvents", () => { describe("viewportEventsManager", () => { const listener = jest.fn(); beforeEach(() => { listener.mockClear(); viewportEventsManager.removeListener(listener); }); it("is initialized properly", () => { expect(viewportEventsManager).toHaveProperty("listeners", []); expect(viewportEventsManager).toHaveProperty("lastEvent", null); expect(viewportEventsManager).toHaveProperty("firesLastEventOnAdd", true); }); it("allows to add event listeners", () => { viewportEventsManager.addListener(listener); expect(viewportEventsManager).toHaveProperty("listeners", [listener]); }); it("allows to remove event listeners", () => { viewportEventsManager.addListener(listener); viewportEventsManager.removeListener(listener); expect(viewportEventsManager).toHaveProperty("listeners", []); }); it("calls the listeners when notifying with an event", () => { viewportEventsManager.addListener(listener); viewportEventsManager.notify(event); expect(listener).toHaveBeenCalledWith(event); }); it("it calls the listener with the last recorded event when adding a new lister", () => { const listener2 = jest.fn(); const lastEvent = { lastEvent: true }; viewportEventsManager.notify(lastEvent); viewportEventsManager.addListener(listener2); expect(listener2).toHaveBeenCalledWith(lastEvent); }); }); }); describe("useViewportEventsContext", () => { it("returns the context", () => { // eslint-disable-next-line react/prop-types const wrapper = ({ children }) => ( <ViewportEventContext.Provider value={viewportEventsManager}> {children} </ViewportEventContext.Provider> ); const { result } = renderHook(() => useViewportEventsContext(), { wrapper, }); expect(result).toHaveProperty("current", viewportEventsManager); }); });