import { describe, expect, mock, test } from "bun:test";
import type { Viewer } from "~/lib/types";
type Handler = (input: { data: Record<string, unknown>; context: { viewer: Viewer | null } }) => Promise<unknown>;
type Builder = { middleware: () => Builder; validator: () => Builder; handler: (fn: Handler) => Handler };
function builder(): Builder {
const self: Builder = { middleware: () => self, validator: () => self, handler: (fn) => fn };
return self;
}
class StubEntrypoint {}
mock.module("cloudflare:workers", () => ({
env: { PUBLIC_URL: "https://forge.example.com" },
waitUntil: () => undefined,
WorkflowEntrypoint: StubEntrypoint,
DurableObject: StubEntrypoint,
WorkerEntrypoint: StubEntrypoint,
}));
mock.module("@tanstack/react-start", () => ({ createServerFn: () => builder(), createMiddleware: () => builder() }));
mock.module("./middleware", () => ({ viewerMiddleware: {}, requireViewer: (viewer: Viewer) => viewer }));
const actualLimits = await import("~/server/limits");
mock.module("~/server/limits", () => ({ ...actualLimits, limitBrowse: async () => undefined }));
const takenDown = {
id: "evil",
name: "evil",
kind: "user",
avatar_key: "evil-abc",
disabled_at: 5,
disabled_reason: "admin",
show: 0,
followers: 0,
repos: 0,
created_at: 0,
};
const actualDb = await import("~/server/db");
mock.module("~/server/db", () => ({
...actualDb,
first: async (sql: string) => (/FROM accounts/.test(sql) ? takenDown : null),