55 lines · 1.9 KB · TypeScript
RawDownload
import type { EnvironmentConnectionPresentation } from "@t3tools/client-runtime/connection";import { describe, expect, it } from "vite-plus/test"; import { presentSavedCloudEnvironmentConnection } from "./cloudEnvironmentConnectionPresentation"; function connection(  phase: EnvironmentConnectionPresentation["phase"],  error: string | null = null,): EnvironmentConnectionPresentation {  return { phase, error, traceId: null };} describe("saved cloud environment connection presentation", () => {  it("only labels a live connection as connected", () => {    expect(presentSavedCloudEnvironmentConnection(connection("connected"))).toEqual({      buttonLabel: "Connected",      statusText: "Connected",      tone: "connected",    });     expect(presentSavedCloudEnvironmentConnection(connection("connecting"))).toEqual({      buttonLabel: "Connecting…",      statusText: "Connecting...",      tone: "connecting",    });  });   it("surfaces a failed attempt while the supervisor reconnects", () => {    expect(      presentSavedCloudEnvironmentConnection(        connection("reconnecting", "Relay environment endpoint is unavailable."),      ),    ).toEqual({      buttonLabel: "Reconnecting…",      statusText:        "Failed to connect. Reconnecting... Reason: Relay environment endpoint is unavailable.",      tone: "connecting",    });  });   it.each([    ["error", "Connection failed", "Connection failed. Reason: Access denied.", "error"],    ["offline", "Offline", "Offline", "idle"],    ["available", "Not connected", "Available", "idle"],  ] as const)(    "presents %s without claiming the environment is connected",    (phase, buttonLabel, statusText, tone) => {      expect(        presentSavedCloudEnvironmentConnection(          connection(phase, phase === "error" ? "Access denied." : null),        ),      ).toEqual({ buttonLabel, statusText, tone });    },  );});