import assert from "node:assert/strict"; import { readFileSync } from "node:fs"; import test from "node:test"; const provider = readFileSync(new URL("../src/lib/session-list-context.tsx", import.meta.url), "utf8"); const layout = readFileSync(new URL("../src/app/(app)/layout.tsx", import.meta.url), "utf8"); const page = readFileSync(new URL("../src/app/(app)/page.tsx", import.meta.url), "utf8"); const sessionHook = readFileSync(new URL("../src/hooks/use-session-management.ts", import.meta.url), "utf8"); test("the app layout owns one SessionListProvider and one SidebarProvider", () => { assert.match(layout, //); assert.equal(layout.match(//g)?.length, 1); assert.match(layout, //); assert.equal(layout.match(/ { assert.match(provider, /fetch\(`\/api\/sessions\?limit=\$\{SESSION_PAGE_SIZE\}`/); assert.match(provider, /fetch\("\/api\/account"/); assert.match(page, /await sessionListReady;/); assert.doesNotMatch(page, /fetchSessions\(/); assert.doesNotMatch(page, /fetchAccount\(/); assert.match(page, /useHomeShellRegistration\(/); }); test("a 401 clears the list and marks signedOut", () => { assert.match(provider, /sessionResponse\.status === 401 \|\| accountResponse\.status === 401/); assert.match(provider, /signedOut: true/); assert.doesNotMatch(provider, /localStorage|sessionStorage|document\.cookie|indexedDB/i); }); test("session writes no longer invalidate a second cache", () => { assert.doesNotMatch(sessionHook, /invalidateSidebarCache/); });