| 12345678910111213141516171819202122232425262728293031 |
- import test from 'node:test';
- import assert from 'node:assert/strict';
- import { mkdtemp, rm } from 'node:fs/promises';
- import { tmpdir } from 'node:os';
- import { join } from 'node:path';
- import { JobStore } from '../src/job-store.mjs';
- test('清理旧重试任务时不删除新任务的幂等映射', async t => {
- const directory = await mkdtemp(join(tmpdir(), 'yuban-job-store-test-'));
- t.after(() => rm(directory, { recursive: true, force: true }));
- const store = new JobStore(directory, 86_400_000);
- await store.init();
- const common = {
- ownerKey: 'owner',
- idempotencyKey: 'same-key',
- status: 'failed',
- stage: 'failed',
- progress: 10,
- createdAt: '2026-08-05T00:00:00.000Z',
- updatedAt: '2026-08-05T00:00:00.000Z',
- };
- await store.create({ ...common, id: 'old', expiresAt: '2026-08-05T00:01:00.000Z' });
- await store.create({
- ...common,
- id: 'new',
- status: 'queued',
- expiresAt: '2026-08-07T00:00:00.000Z',
- });
- await store.cleanupExpired(Date.parse('2026-08-06T00:00:00.000Z'));
- assert.equal(store.findByIdempotency('same-key')?.id, 'new');
- });
|