clone

a deno framework for local-first web apps that open instantly, work offline and sync when users choose

feat/prf-provision-custody
lofi / package / runtime / inspector_test.ts
inspector_test.ts 1.9K
1import { inspectorRows, type InspectorSnapshot } from "./inspector.ts";2// Package contract tests.34const test = (globalThis as unknown as {5 Deno: { test(name: string, body: () => void | Promise<void>): void };6}).Deno.test;78function assert(condition: unknown, message: string): asserts condition {9 if (!condition) throw new Error(message);10}1112const snapshot: InspectorSnapshot = {13 identity: { state: "device-local key active", backup: "recovery phrase" },14 storage: {15 driver: "persistent open",16 persistence: "granted",17 fallback: "none",18 startupFailure: "broker-incompatible",19 },20 sync: {21 mode: "managed configured",22 transport: "live detail unavailable",23 pendingLocalWrites: 1,24 pendingGlobalWrites: 2,25 lastWrite: "local",26 },27 runtime: {28 clients: 1,29 consumers: 2,30 vendorSubscriptions: 1,31 mutationListeners: 1,32 mutationErrors: 0,33 },34 lifecycle: {35 mode: "managed",36 status: "completed",37 attempts: 2,38 lastReason: "visibilitychange",39 transportDetail: "live detail unavailable",40 },41 multiTab: {42 role: "unavailable",43 detail: "Jazz alpha.53 exposes no supported leader/follower signal",44 },45};4647test("inspector rows retain truthful unavailable and pending states", () => {48 const rows = Object.fromEntries(inspectorRows(snapshot).map((row) => [row.label, row.value]));49 assert(rows.Transport === "live detail unavailable", "transport precision was fabricated");50 assert(rows["Pending lofi local"] === "1", "local pending work was omitted");51 assert(rows["Pending lofi global"] === "2", "global pending work was omitted");52 assert(53 rows["Storage startup"] === "broker-incompatible",54 "startup failure classification was omitted",55 );56 assert(rows["Multi-tab role"] === "unavailable", "multi-tab role was fabricated");57 assert(!JSON.stringify(rows).includes("secret"), "inspector rows exposed a secret-shaped field");58});