import { beforeEach, describe, expect, test } from "vitest";
import { DatabaseRateLimiterAdapter } from "@daiso-tech/core/rate-limiter/database-rate-limiter-adapter";
import { SlidingWindowLimiter } from "@daiso-tech/core/rate-limiter/policies";
import { slidingWindowLimiterTestSuite } from "@daiso-tech/core/rate-limiter/test-utilities";
import { constantBackoff } from "@daiso-tech/core/backoff-policies";
import { MemoryRateLimiterStorageAdapter } from "@daiso-tech/core/rate-limiter/memory-rate-limiter-storage-adapter";
describe("sliding-window-limiter class: DatabaseRateLimiterAdapter", () => {
slidingWindowLimiterTestSuite({
createAdapter: () => {
const adapter = new DatabaseRateLimiterAdapter({
adapter: new MemoryRateLimiterStorageAdapter(),
backoffPolicy: constantBackoff(
slidingWindowLimiterTestSuite.backoffPolicySettings,
),
rateLimiterPolicy: new SlidingWindowLimiter(
slidingWindowLimiterTestSuite.rateLimiterPolicySettings,
),
});
return adapter;
},
beforeEach,
describe,
expect,
test,
});
});
IMPORT_PATH:
"@daiso-tech/core/rate-limiter/test-utilities"