t3-code-android-nightly/.repos/alchemy-effect/packages/alchemy/test/Planetscale/Providers.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

66 lines
2.2 KiB
TypeScript

import { AlchemyContext } from "@/AlchemyContext.ts";
import { AuthProviders } from "@/Auth/AuthProvider.ts";
import * as CliKit from "@/Cli/CliKit/index.ts";
import * as Planetscale from "@/Planetscale";
import { Credentials } from "@/Planetscale/Credentials.ts";
import { Stack } from "@/Stack.ts";
import { Stage } from "@/Stage.ts";
import * as NodeServices from "@effect/platform-node/NodeServices";
import { expect, it } from "alchemy-test";
import * as ConfigProvider from "effect/ConfigProvider";
import * as Effect from "effect/Effect";
import * as Layer from "effect/Layer";
import * as Result from "effect/Result";
import * as FetchHttpClient from "effect/http/FetchHttpClient";
import { v4 as uuidv4 } from "uuid";
it.live(
"resolving Planetscale credentials rejects an unknown explicit profile",
() =>
Effect.gen(function* () {
const result = yield* Effect.result(
Effect.sandbox(
Effect.gen(function* () {
return yield* yield* Credentials;
}).pipe(Effect.provide(Planetscale.providers())),
),
);
expect(Result.isFailure(result)).toBe(true);
if (Result.isFailure(result)) {
expect(String(result.failure)).toContain("does not exist");
expect(String(result.failure)).toContain("alchemy profile create");
}
}).pipe(
Effect.provide(
Layer.mergeAll(
Layer.succeed(AuthProviders, {}),
Layer.succeed(Stage, "test"),
Layer.succeed(Stack, {
name: "test",
stage: "test",
resources: {},
bindings: {},
actions: {},
}),
Layer.succeed(AlchemyContext, {
dev: false,
adopt: false,
dotAlchemy: ".alchemy",
}),
Layer.succeed(
ConfigProvider.ConfigProvider,
ConfigProvider.fromUnknown({
ALCHEMY_PROFILE: `non-existent-${uuidv4()}`,
}),
),
).pipe(
Layer.provideMerge(
Layer.mergeAll(NodeServices.layer, FetchHttpClient.layer),
),
),
),
Effect.scoped,
Effect.provide(CliKit.layer({ input: false })),
),
{ tags: ["unit", "provider:planetscale", "local"] },
);