import { expect, test } from "vitest"; import { buildInstallationContract, renderWorkspaceDocs } from "../src/workspaces/contracts.js"; import { parseWorkspaceYaml } from "../src/workspaces/schema.js"; const validWorkspace = parseWorkspaceYaml(`workspace: schema_version: 1 id: psd-clinical name: Policlinico San Donato language: it dwh: engine: postgres database: postgres schema: datawarehouse supported_transports: - postgres_direct - rest_api semantic_index: vector_store: engine: pgvector collection: clinical_documents dimensions: 768 distance: cosine supported_transports: - pgvector_direct - rest_api embedding: provider: ollama_compatible model: nomic-embed-text-v2-moe dimensions: 768 llm_policy: default: zai/glm-5.2 allowed: - zai/glm-5.2 - openai/gpt-5 `); test("generates stable FILE-based secret requirements from an immutable ID", () => { const contract = buildInstallationContract(validWorkspace); expect(contract.variables.map((variable) => variable.name)) .toContain("THT_WS_PSD_CLINICAL_DWH_PASSWORD_FILE"); expect(contract.variables.filter((variable) => variable.secret).every((variable) => ( variable.name.endsWith("_FILE") ))).toBe(true); expect(renderWorkspaceDocs(validWorkspace).envExample).not.toContain("secret-value"); }); test("derives variable names from fixed role and suffix metadata", () => { const contract = buildInstallationContract(validWorkspace); const password = contract.variables.find((variable) => ( variable.role === "DWH" && variable.suffix === "PASSWORD_FILE" )); expect(password).toMatchObject({ name: "THT_WS_PSD_CLINICAL_DWH_PASSWORD_FILE", role: "DWH", suffix: "PASSWORD_FILE", secret: true, }); }); test("renders English UI headings and workspace-language Italian prose", () => { const docs = renderWorkspaceDocs(validWorkspace); expect(docs.markdown).toContain("# Installation requirements"); expect(docs.markdown).toContain("Configurazione dell'installazione"); expect(docs.envExample).toContain("THT_WS_PSD_CLINICAL_VECTOR_TRANSPORT="); });