import { act } from "@testing-library/react"; import { createHttpMockingServer } from "@hyper-fetch/testing"; import { client, renderUseAppManager } from "../../utils"; const { resetMocks, startServer, stopServer } = createHttpMockingServer(); describe("useAppManager [ Base ]", () => { beforeAll(() => { startServer(); }); afterEach(() => { resetMocks(); }); afterAll(() => { stopServer(); }); beforeEach(() => { vi.resetModules(); client.clear(); }); describe("given app is initializing", () => { describe("when hook gets rendered", () => { it("should initialize in online mode", async () => { const { result } = renderUseAppManager(client); expect(result.current.isOnline).toBeTrue(); }); it("should initialize in focused mode", async () => { const { result } = renderUseAppManager(client); expect(result.current.isFocused).toBeTrue(); }); }); }); describe("given app online status change", () => { describe("when turning offline", () => { it("should change isOnline state to false", async () => { const { result } = renderUseAppManager(client); act(() => { result.current.setOnline(false); }); expect(result.current.isOnline).toBeFalse(); }); }); describe("when turning online", () => { it("should change isOnline state to true", async () => { const { result } = renderUseAppManager(client); act(() => { result.current.setOnline(false); result.current.setOnline(true); }); expect(result.current.isOnline).toBeTrue(); }); }); }); describe("given app focus status change", () => { describe("when turning blur", () => { it("should change isFocused state to false", async () => { const { result } = renderUseAppManager(client); act(() => { result.current.setFocused(false); }); expect(result.current.isFocused).toBeFalse(); }); }); describe("when turning focused", () => { it("should change isFocused state to true", async () => { const { result } = renderUseAppManager(client); act(() => { result.current.setFocused(false); result.current.setFocused(true); }); expect(result.current.isFocused).toBeTrue(); }); }); }); });