Merge pull request #350 from xretic/main

refactor adapter tests for improved structure
This commit is contained in:
dswbx
2026-02-11 10:02:56 +01:00
committed by GitHub

View File

@@ -1,66 +1,76 @@
import { expect, describe, it, beforeAll, afterAll, mock } from "bun:test"; import { expect, describe, it, beforeAll, afterAll, mock } from "bun:test";
import * as adapter from "adapter"; import * as adapter from "adapter";
import { disableConsoleLog, enableConsoleLog } from "core/utils"; import { disableConsoleLog, enableConsoleLog, omitKeys } from "core/utils";
import { adapterTestSuite } from "adapter/adapter-test-suite"; import { adapterTestSuite } from "adapter/adapter-test-suite";
import { bunTestRunner } from "adapter/bun/test"; import { bunTestRunner } from "adapter/bun/test";
import { omitKeys } from "core/utils";
const stripConnection = <T extends Record<string, any>>(cfg: T) =>
omitKeys(cfg, ["connection"]);
beforeAll(disableConsoleLog); beforeAll(disableConsoleLog);
afterAll(enableConsoleLog); afterAll(enableConsoleLog);
describe("adapter", () => { describe("adapter", () => {
it("makes config", async () => { describe("makeConfig", () => {
expect(omitKeys(await adapter.makeConfig({}), ["connection"])).toEqual({}); it("returns empty config for empty inputs", async () => {
expect( const cases: Array<Parameters<typeof adapter.makeConfig>> = [
omitKeys(await adapter.makeConfig({}, { env: { TEST: "test" } }), ["connection"]), [{}],
).toEqual({}); [{}, { env: { TEST: "test" } }],
];
// merges everything returned from `app` with the config for (const args of cases) {
expect( const cfg = await adapter.makeConfig(...(args as any));
omitKeys( expect(stripConnection(cfg)).toEqual({});
await adapter.makeConfig( }
{ app: (a) => ({ config: { server: { cors: { origin: a.env.TEST } } } }) }, });
{ env: { TEST: "test" } },
),
["connection"],
),
).toEqual({
config: { server: { cors: { origin: "test" } } },
});
});
it("allows all properties in app function", async () => { it("merges app output into config", async () => {
const called = mock(() => null); const cfg = await adapter.makeConfig(
const config = await adapter.makeConfig( { app: (a) => ({ config: { server: { cors: { origin: a.env.TEST } } } }) },
{ { env: { TEST: "test" } },
app: (env) => ({
connection: { url: "test" },
config: { server: { cors: { origin: "test" } } },
options: {
mode: "db",
},
onBuilt: () => {
called();
expect(env).toEqual({ foo: "bar" });
},
}),
},
{ foo: "bar" },
); );
expect(config.connection).toEqual({ url: "test" });
expect(config.config).toEqual({ server: { cors: { origin: "test" } } });
expect(config.options).toEqual({ mode: "db" });
await config.onBuilt?.(null as any);
expect(called).toHaveBeenCalled();
});
adapterTestSuite(bunTestRunner, { expect(stripConnection(cfg)).toEqual({
config: { server: { cors: { origin: "test" } } },
});
});
it("allows all properties in app() result", async () => {
const called = mock(() => null);
const cfg = await adapter.makeConfig(
{
app: (env) => ({
connection: { url: "test" },
config: { server: { cors: { origin: "test" } } },
options: { mode: "db" as const },
onBuilt: () => {
called();
expect(env).toEqual({ foo: "bar" });
},
}),
},
{ foo: "bar" },
);
expect(cfg.connection).toEqual({ url: "test" });
expect(cfg.config).toEqual({ server: { cors: { origin: "test" } } });
expect(cfg.options).toEqual({ mode: "db" });
await cfg.onBuilt?.({} as any);
expect(called).toHaveBeenCalledTimes(1);
});
});
describe("adapter test suites", () => {
adapterTestSuite(bunTestRunner, {
makeApp: adapter.createFrameworkApp, makeApp: adapter.createFrameworkApp,
label: "framework app", label: "framework app",
}); });
adapterTestSuite(bunTestRunner, { adapterTestSuite(bunTestRunner, {
makeApp: adapter.createRuntimeApp, makeApp: adapter.createRuntimeApp,
label: "runtime app", label: "runtime app",
}); });
});
}); });