import { EnvironmentId, ProjectId, ThreadId } from "@t3tools/contracts"; import { describe, expect, it } from "vitest"; import { createKnownEnvironment, getKnownEnvironmentHttpBaseUrl } from "./knownEnvironment.ts"; import { parseScopedProjectKey, parseScopedThreadKey, scopedProjectKey, scopedRefKey, scopedThreadKey, scopeProjectRef, scopeThreadRef, } from "./scoped.ts"; describe("known environment bootstrap helpers", () => { it("creates known environments from explicit server base urls", () => { expect( createKnownEnvironment({ label: "Remote environment", target: { httpBaseUrl: "https://remote.example.com", wsBaseUrl: "wss://remote.example.com", }, }), ).toEqual({ id: "ws:Remote environment", label: "Remote environment", source: "manual", target: { httpBaseUrl: "https://remote.example.com", wsBaseUrl: "wss://remote.example.com", }, }); }); it("returns the explicit fetchable http origin", () => { expect( getKnownEnvironmentHttpBaseUrl( createKnownEnvironment({ label: "Local environment", target: { httpBaseUrl: "http://localhost:3773", wsBaseUrl: "ws://localhost:3773", }, }), ), ).toBe("http://localhost:3773"); expect( getKnownEnvironmentHttpBaseUrl( createKnownEnvironment({ label: "Remote environment", target: { httpBaseUrl: "https://remote.example.com/api", wsBaseUrl: "wss://remote.example.com/api", }, }), ), ).toBe("https://remote.example.com/api"); }); }); describe("scoped refs", () => { const environmentId = EnvironmentId.make("environment-test"); const projectRef = scopeProjectRef(environmentId, ProjectId.make("project-1")); const threadRef = scopeThreadRef(environmentId, ThreadId.make("thread-1")); it("builds stable scoped project and thread keys", () => { expect(scopedRefKey(projectRef)).toBe("environment-test:project-1"); expect(scopedRefKey(threadRef)).toBe("environment-test:thread-1"); expect(scopedProjectKey(projectRef)).toBe("environment-test:project-1"); expect(scopedThreadKey(threadRef)).toBe("environment-test:thread-1"); }); it("returns typed scoped refs", () => { expect(projectRef).toEqual({ environmentId, projectId: ProjectId.make("project-1"), }); expect(threadRef).toEqual({ environmentId, threadId: ThreadId.make("thread-1"), }); }); it("parses scoped project and thread keys back into refs", () => { expect(parseScopedProjectKey("environment-test:project-1")).toEqual(projectRef); expect(parseScopedThreadKey("environment-test:thread-1")).toEqual(threadRef); expect(parseScopedProjectKey("bad-key")).toBeNull(); expect(parseScopedThreadKey("bad-key")).toBeNull(); }); });