import { describe, expect, test } from "bun:test"; import { renderResources } from "../../lib/render"; describe("side-effect-free export rendering", () => { test("resolves build images and renders locally without provider calls", async () => { const paths: string[] = []; const resources = await renderResources( "shop", { services: { web: { build: "." } } }, process.cwd(), { request: async (path: string) => { paths.push(path); return { reference: "registry/web@sha256:immutable" } as T; }, }, ); const deployment = resources.find( (resource) => resource.kind === "Deployment", ); expect(paths).toEqual(["/images/resolve"]); expect((deployment as any)?.spec?.template.spec.containers[0].image).toBe( "registry/web@sha256:immutable", ); }); test("clearly rejects exports requiring generated credentials", async () => { await expect( renderResources("shop", { services: { web: { image: "app", volumes: ["postgresql:app"] } }, }), ).rejects.toThrow("Export is side-effect-free"); }); });