UNPKG

@applicaster/zapp-react-native-utils

Version:

Applicaster Zapp React Native utilities package

67 lines (49 loc) 1.78 kB
import EventEmitter from "events"; import { renderHook, act } from "@testing-library/react-hooks"; import { useAppState } from "../useAppState"; const emitter = new EventEmitter(); const initialState = "active"; jest.doMock("react-native/Libraries/AppState/AppState", () => ({ currentState: initialState, addEventListener: (x, y) => emitter.addListener(x, y), removeEventListener: emitter.removeListener, })); describe("useAppState", () => { afterAll(() => { emitter.removeAllListeners(); }); describe("returnIsActive param set to undefined", () => { it("should return initial app state when called", function () { const { result } = renderHook(() => useAppState()); expect(result.current).toBe(initialState); }); it("should update return value on appState change event", function () { const { result } = renderHook(() => useAppState()); expect(result.current).toBe(initialState); act(() => { emitter.emit("change", "background"); }); expect(result.current).toBe("background"); }); }); describe("returnIsActive param set to true", () => { it('should return true for "active" state', function () { const { result } = renderHook(() => useAppState(true)); act(() => { emitter.emit("change", "active"); }); expect(result.current).toBe(true); }); it('should return true for "background" and "inactive" states', function () { const { result } = renderHook(() => useAppState(true)); act(() => { emitter.emit("change", "background"); }); expect(result.current).toBe(false); act(() => { emitter.emit("change", "inactive"); }); expect(result.current).toBe(false); }); }); });