import test from 'node:test' import assert from 'node:assert/strict' import { loadModule } from './load.mjs' const { throttleRuns } = await loadModule('src/lib/throttleRuns.js') test('Repo-Import hoechstens einmal pro Minute, laufender Abgleich wird geteilt', async () => { let runs = 0 let release const throttled = throttleRuns(() => { runs += 1; return new Promise((r) => { release = r }) }, 60000) const a = throttled() const b = throttled() assert.equal(a, b) await new Promise((r) => setTimeout(r, 0)) release({ created: 0 }) await a assert.equal(runs, 1) assert.equal(await throttled(), null) assert.equal(runs, 1) const later = throttled({ now: Date.now() + 61000 }) await new Promise((r) => setTimeout(r, 0)) release({ created: 1 }) assert.deepEqual(await later, { created: 1 }) assert.equal(runs, 2) }) test('Fehler wird weitergereicht, danach darf sofort neu versucht werden', async () => { let runs = 0 const throttled = throttleRuns(async () => { runs += 1; if (runs === 1) throw new Error('weg'); return { ok: true } }, 60000) await assert.rejects(throttled(), /weg/) assert.deepEqual(await throttled(), { ok: true }) assert.equal(runs, 2) assert.equal(await throttled(), null) })