44 lines · 1.4 KB · TypeScript
RawDownload
import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises";import { tmpdir } from "node:os";import { join } from "node:path";import { describe, expect, it } from "@effect/vitest";import { Effect } from "effect";import { schema } from "./schema"; describe("schema generate", () => {  it.effect("generates a FumaDB-backed Drizzle schema from executor config", () =>    Effect.acquireUseRelease(      Effect.promise(() => mkdtemp(join(tmpdir(), "executor-cli-schema-"))),      (cwd) =>        Effect.promise(async () => {          await writeFile(            join(cwd, "executor.config.js"),            "export default { plugins: () => [] };\n",          );           await schema.parseAsync(            [              "node",              "test",              "generate",              "--cwd",              cwd,              "--output",              "generated/executor-schema.ts",              "--namespace",              "executor_cli_test",              "--provider",              "sqlite",            ],            { from: "node" },          );           const generated = await readFile(join(cwd, "generated/executor-schema.ts"), "utf8");          expect(generated).toContain("executor_cli_test");          expect(generated).toContain("integration");          expect(generated).toContain("connection");        }),      (cwd) => Effect.promise(() => rm(cwd, { recursive: true, force: true })),    ),  );});