import { afterEach, beforeEach, describe, expect, test } from "vitest";
import Sqlite, { type Database } from "better-sqlite3";
import { databaseCacheAdapterTestSuite } from "@daiso-tech/core/cache/test-utilities";
import { KyselyCacheAdapter, type KyselyCacheAdapterTables } from "@daiso-tech/core/cache/kysely-cache-adapter";
import { Serde } from "@daiso-tech/core/serde";
import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/super-json-serde-adapter";
import { Kysely, SqliteDialect } from "kysely";
describe("class: KyselyCacheAdapter", () => {
let database: Database;
let kysely: Kysely<KyselyCacheAdapterTables>;
beforeEach(() => {
database = new Sqlite(":memory:");
kysely = new Kysely({
dialect: new SqliteDialect({
database,
}),
});
});
afterEach(() => {
database.close();
});
databaseCacheAdapterTestSuite({
createAdapter: async () => {
const adapter = new KyselyCacheAdapter({
kysely,
shouldRemoveExpiredKeys: false,
serde: new Serde(new SuperJsonSerdeAdapter()),
});
await adapter.init();
return adapter;
},
test,
beforeEach,
expect,
describe,
});
});
The
databaseCacheAdapterTestSuitefunction simplifies the process of testing your custom implementation ofIDatabaseCacheAdapterwithvitest.IMPORT_PATH:
"@daiso-tech/core/cache/test-utilities"