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 })), ), );});
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 })),
),
);
});