import { test } from '@japa/runner' import { tailRanges, wildmatOf } from '#services/planner' const options = { rangeArticles: 1000, minArticles: 100, maxDelayMinutes: 15, priority: -1 } const now = new Date('2026-10-09T10:00:00Z') const minutesAgo = (m: number) => new Date(now.getTime() - m * 60_000) test.group('coordinator / live tail', () => { test('a chunk of new articles, or a long enough wait, makes tail ranges', ({ assert }) => { const rows = tailRanges( [ // Enough new articles: planned at once, cut at rangeArticles. { id: 1, plannedTo: 5000, plannedAt: minutesAgo(2), high: 7500 }, // A few new articles, recently planned: waits. { id: 2, plannedTo: 100, plannedAt: minutesAgo(2), high: 150 }, // A few new articles, waited long enough. { id: 3, plannedTo: 100, plannedAt: minutesAgo(20), high: 103 }, // Nothing new, never planned, not listed: nothing. { id: 4, plannedTo: 100, plannedAt: minutesAgo(60), high: 100 }, { id: 5, plannedTo: null, plannedAt: minutesAgo(60), high: 500 }, { id: 6, plannedTo: 100, plannedAt: minutesAgo(60), high: null }, ], now, options ) assert.deepEqual( rows.map((r) => [r.group_id, r.start_id, r.end_id, r.next_id, r.priority]), [ [1, 5001, 6000, 5001, -1], [1, 6001, 7000, 6001, -1], [1, 7001, 7500, 7001, -1], [3, 101, 103, 101, -1], ] ) }) test('LIST ACTIVE patterns by the first two name parts', ({ assert }) => { assert.equal(wildmatOf('alt.binaries.boneless'), 'alt.binaries.*') assert.equal(wildmatOf('alt.binaries.multimedia.anime'), 'alt.binaries.*') assert.equal(wildmatOf('alt.binaries'), 'alt.binaries') }) })