chore(web): drop the double cast from the useSessionRef test fixture

Addresses Copilot's review on #2152. The client stand-in was
`({ tag }) as unknown as InspectorClient` — a double cast with no
justification, which AGENTS.md rejects.

`Object.create(InspectorClient.prototype)` gives a real prototype chain
without running the constructor, so it needs only a single cast and still
drags in no transport or environment. The tag went with it: every
assertion compares identity, and `Object.create` already returns a
distinct object per call.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MZdpUwhHf943FoprcLVzEm
Signed-off-by: cliffhall <cliff@futurescale.com>
This commit is contained in:
cliffhall 2026-08-26 20:54:39 -04:00
commit dc026acfea

View file

@ -1,5 +1,5 @@
import { describe, it, expect } from "vitest";
import type { InspectorClient } from "@inspector/core/mcp/index.js";
import { InspectorClient } from "@inspector/core/mcp/index.js";
import type { ServerEntry } from "@inspector/core/mcp/types.js";
import { renderWithMantine } from "../test/renderWithMantine";
import type { PendingReauth } from "../utils/pendingReauth";
@ -17,8 +17,15 @@ const entry = (id: string, name = id): ServerEntry => ({
connection: { status: "disconnected" },
});
/** A stand-in for the live client — the hook only ever stores the reference. */
const client = (tag: string) => ({ tag }) as unknown as InspectorClient;
/**
* A distinct client identity per call. `Object.create` does not run the
* constructor, so this is a real `InspectorClient` prototype chain with no
* transport or environment behind it — which is all that is needed here: the
* hook only stores the reference, and every assertion compares identity rather
* than reading a property off it.
*/
const client = (): InspectorClient =>
Object.create(InspectorClient.prototype) as InspectorClient;
const stepUp = (serverId: string): PendingStepUp => ({
serverId,
@ -69,7 +76,7 @@ function harness(initial: SessionValues): Harness {
describe("useSessionRef", () => {
it("seeds the snapshot from the first render's values", () => {
const servers = [entry("a")];
const c = client("first");
const c = client();
const h = harness(
values({ activeServerId: "a", servers, inspectorClient: c }),
);
@ -91,7 +98,7 @@ describe("useSessionRef", () => {
it("mirrors every field on a later render", () => {
const h = harness(values());
const servers = [entry("a"), entry("b")];
const c = client("later");
const c = client();
const up = stepUp("a");
const re = reauth("b");
h.update(
@ -117,7 +124,7 @@ describe("useSessionRef", () => {
values({
activeServerId: "a",
servers: [entry("a")],
inspectorClient: client("x"),
inspectorClient: client(),
pendingStepUp: stepUp("a"),
pendingReauth: reauth("a"),
}),