Files
web/packages/sdk-react/tests/hooks.test.tsx
Austin d2cb51d489 Execute oxfmt (#1166)
Ran
pnpm oxfmt .

This should get the web repo aligned so that we can better enforce oxfmt going forward.
2026-06-16 20:30:08 -04:00

45 lines
1.5 KiB
TypeScript

import { act, render, renderHook, waitFor } from "@testing-library/react";
import { MeshClient } from "@meshtastic/sdk";
import { createFakeTransport } from "@meshtastic/sdk/testing";
import { ChannelNumber } from "@meshtastic/sdk";
import { describe, expect, it } from "vitest";
import { MeshProvider, useChat, useMeshDevice } from "../mod.ts";
function setup() {
const handle = createFakeTransport();
const client = new MeshClient({ transport: handle.transport });
const wrapper = ({ children }: { children: React.ReactNode }) => (
<MeshProvider client={client}>{children}</MeshProvider>
);
return { client, handle, wrapper };
}
describe("sdk-react hooks", () => {
it("useMeshDevice re-renders on myNodeInfo", async () => {
const { handle, wrapper } = setup();
const { result } = renderHook(() => useMeshDevice(), { wrapper });
expect(result.current.myNodeNum).toBeUndefined();
await act(async () => {
handle.respond.withMyNodeInfo({ myNodeNum: 99 });
await new Promise((r) => setTimeout(r, 10));
});
await waitFor(() => {
expect(result.current.myNodeNum).toBe(99);
});
});
it("useChat surfaces inbound messages", async () => {
const { handle, wrapper } = setup();
const { result } = renderHook(() => useChat(ChannelNumber.Primary), {
wrapper,
});
expect(result.current.messages).toEqual([]);
// Exhaustive integration coverage is in packages/sdk; this test ensures
// the hook wiring re-renders on a signal change.
void handle;
void render;
});
});