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,44 +1,49 @@
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( }
});
it("merges app output into config", async () => {
const cfg = await adapter.makeConfig(
{ app: (a) => ({ config: { server: { cors: { origin: a.env.TEST } } } }) }, { app: (a) => ({ config: { server: { cors: { origin: a.env.TEST } } } }) },
{ env: { TEST: "test" } }, { env: { TEST: "test" } },
), );
["connection"],
), expect(stripConnection(cfg)).toEqual({
).toEqual({
config: { server: { cors: { origin: "test" } } }, config: { server: { cors: { origin: "test" } } },
}); });
}); });
it("allows all properties in app function", async () => { it("allows all properties in app() result", async () => {
const called = mock(() => null); const called = mock(() => null);
const config = await adapter.makeConfig(
const cfg = await adapter.makeConfig(
{ {
app: (env) => ({ app: (env) => ({
connection: { url: "test" }, connection: { url: "test" },
config: { server: { cors: { origin: "test" } } }, config: { server: { cors: { origin: "test" } } },
options: { options: { mode: "db" as const },
mode: "db",
},
onBuilt: () => { onBuilt: () => {
called(); called();
expect(env).toEqual({ foo: "bar" }); expect(env).toEqual({ foo: "bar" });
@@ -47,13 +52,17 @@ describe("adapter", () => {
}, },
{ foo: "bar" }, { foo: "bar" },
); );
expect(config.connection).toEqual({ url: "test" });
expect(config.config).toEqual({ server: { cors: { origin: "test" } } }); expect(cfg.connection).toEqual({ url: "test" });
expect(config.options).toEqual({ mode: "db" }); expect(cfg.config).toEqual({ server: { cors: { origin: "test" } } });
await config.onBuilt?.(null as any); expect(cfg.options).toEqual({ mode: "db" });
expect(called).toHaveBeenCalled();
await cfg.onBuilt?.({} as any);
expect(called).toHaveBeenCalledTimes(1);
});
}); });
describe("adapter test suites", () => {
adapterTestSuite(bunTestRunner, { adapterTestSuite(bunTestRunner, {
makeApp: adapter.createFrameworkApp, makeApp: adapter.createFrameworkApp,
label: "framework app", label: "framework app",
@@ -64,3 +73,4 @@ describe("adapter", () => {
label: "runtime app", label: "runtime app",
}); });
}); });
});