@applicaster/zapp-react-native-utils
Version:
Applicaster Zapp React Native utilities package
67 lines (49 loc) • 1.78 kB
text/typescript
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);
});
});
});