t3-code-android-nightly/.repos/alchemy-effect/packages/alchemy/test/SQL/D1.test.ts
Julius Marminge 6f9cea00ae
chore(refs): sync Effect and Alchemy references to 4.0.1 and beta.80 (#16170)
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-05 13:22:30 -07:00

44 lines
1.4 KiB
TypeScript

import * as Cloudflare from "@/Cloudflare";
import * as Test from "@/Test/Alchemy";
import * as Effect from "effect/Effect";
import { exerciseSqlSurface } from "./exercise.ts";
import Stack from "./fixtures/d1-stack.ts";
const { test, beforeAll, afterAll, deploy, destroy } = Test.make({
providers: Cloudflare.providers(),
state: Cloudflare.state(),
});
const HOOK_TIMEOUT = 300_000;
const TEST_TIMEOUT = 120_000;
/**
* End-to-end test of `SQL.D1` — the raw `@effect/sql-d1` client wrapped in
* alchemy's deferred `proxyChain` — against a real Cloudflare Worker + D1
* database. The shared exercise drives every `SqlClient` constructor helper
* the D1 driver supports (transactions and `updateValues` are not supported
* by `@effect/sql-d1`); because the client is proxyChain-wrapped, every
* nested helper (`sql.insert`, `sql.and`, `sql.in`, `sql.csv`, identifiers)
* also regression-tests deferred-proxy replay.
*/
const stack = beforeAll(deploy(Stack), { timeout: HOOK_TIMEOUT });
afterAll.skipIf(!!process.env.NO_DESTROY)(destroy(Stack), {
timeout: HOOK_TIMEOUT,
});
test(
"SQL.D1 exercises the full client surface over a deployed Worker",
Effect.gen(function* () {
const { url } = yield* stack;
yield* exerciseSqlSurface(url);
}),
{
tags: [
"provider:cloudflare",
"provider:cloudflare:d1",
"provider:cloudflare:worker",
"live",
],
timeout: TEST_TIMEOUT,
},
);