import { test } from 'node:test'; import assert from 'node:assert/strict'; import { ReviewQueue } from '../src/lib/queue.js'; test('newer jobs supersede queued work for the same pull request', async () => { const queue = new ReviewQueue(); const ran = []; const superseded = []; const first = queue.enqueue( 'nirpa/hermes-agent', async () => ran.push('old'), { dedupeKey: 'pr:86', onSuperseded: () => superseded.push('old') } ); const second = queue.enqueue( 'nirpa/hermes-agent', async () => ran.push('new'), { dedupeKey: 'pr:86', onSuperseded: () => superseded.push('new') } ); await Promise.all([first, second]); assert.deepEqual(ran, ['new']); assert.deepEqual(superseded, ['old']); assert.equal(queue.pending, 0); }); test('different pull requests are not deduplicated', async () => { const queue = new ReviewQueue(); const ran = []; await Promise.all([ queue.enqueue('nirpa/hermes-agent', async () => ran.push('pr-86'), { dedupeKey: 'pr:86' }), queue.enqueue('nirpa/hermes-agent', async () => ran.push('pr-87'), { dedupeKey: 'pr:87' }) ]); assert.deepEqual(ran, ['pr-86', 'pr-87']); }); test('shared sha key deduplicates push and pull-request webhooks', async () => { const queue = new ReviewQueue(); const ran = []; const push = queue.enqueue( 'nirpa/hermes-agent', async () => ran.push('push'), { dedupeKeys: ['sha:final'] } ); const pullRequest = queue.enqueue( 'nirpa/hermes-agent', async () => ran.push('pull-request'), { dedupeKeys: ['pr:86', 'sha:final'] } ); await Promise.all([push, pullRequest]); assert.deepEqual(ran, ['pull-request']); });