Files
Ewald 85a82f130a test: migrate ui/tests from .mjs to .ts
- Rename 132 *.vitest.mjs -> *.vitest.ts
- Rename vitest.setup.mjs -> vitest.setup.ts
- Rename helpers/vitestEnvironment.mjs -> vitestEnvironment.ts
- Delete settings_store.test.mjs (Node test runner, superseded by .vitest.ts)
- Fix .mjs imports in vitest.setup.ts and grid_loader_adaptive_paging.vitest.ts

Config updates:
- vitest.config.mjs: setupFiles, include, coverage.include -> .ts
- tsconfig.test.json: new dedicated config for test files (strict:false)
- knip.json: update project pattern for tests
- package.json: add typecheck:tests script (audit-only)
2026-05-26 13:04:05 +02:00

46 lines
1.2 KiB
TypeScript

import { describe, expect, it, vi } from "vitest";
import { createJobFinalizeQueue } from "../features/stacks/finalizeQueue.js";
describe("createJobFinalizeQueue", () => {
it("processes multiple job ids instead of dropping overlaps", async () => {
vi.useFakeTimers();
const calls = [];
const queue = createJobFinalizeQueue({
defaultDelayMs: 25,
postJob: async (jobId) => {
calls.push(jobId);
},
});
queue.schedule("job-a");
queue.schedule("job-b");
await vi.advanceTimersByTimeAsync(25);
expect(calls).toEqual(["job-a", "job-b"]);
queue.dispose();
vi.useRealTimers();
});
it("coalesces duplicate schedules for the same job id", async () => {
vi.useFakeTimers();
const calls = [];
const queue = createJobFinalizeQueue({
defaultDelayMs: 50,
postJob: async (jobId) => {
calls.push(jobId);
},
});
queue.schedule("job-a");
queue.schedule("job-a");
await vi.advanceTimersByTimeAsync(50);
expect(calls).toEqual(["job-a"]);
queue.dispose();
vi.useRealTimers();
});
});