@hyper-fetch/react
Version:
React hooks and utils for the hyper-fetch
86 lines (73 loc) • 2.42 kB
text/typescript
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();
});
});
});
});