mirror of
https://github.com/meshtastic/web.git
synced 2026-07-31 15:06:27 -04:00
Ran pnpm oxfmt . This should get the web repo aligned so that we can better enforce oxfmt going forward.
45 lines
1.5 KiB
TypeScript
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;
|
|
});
|
|
});
|