Files
tickte-system/tests/unit/importThrottle.test.mjs
T
ClaudeandClaude Opus 5.5 f4c8b235b9 Projekte im Ticketsystem: Anlegen, Archiv und Anzeige repariert
- Neues Projekt (Projekte-Seite): Repo-Name blieb nach dem ersten
  Buchstaben der Subdomain stehen ("m" statt "musterfirma")
- Ticket "Projekt waehlen": archivierte Repos nach Flag ausblenden, nicht
  nach status (reaktivierte fehlten, archivierte wurden angeboten)
- Projektliste: "Aktive Projekte" + neue Ansicht "Alle inkl. Archiv";
  Liste wird auch nach einem Anlege-Fehler neu geladen
- Kundenauswahl: "Kein Kunde" entfernt Kunde und Ticket wirklich (mit
  Rueckfrage); beim Kundenwechsel bleibt kein fremdes Ticket haengen
- Zuordnen-Assistent ueberschreibt eine vorhandene Website nicht mehr
- Neues Projekt am Ticket bekommt die Art Website
- Umlaute in Subdomains wie im Portal (mueller statt m-ller)
- Preview-Block nur mit gespeicherter Subdomain; archivierte Projekte
  erst reaktivieren, bevor sie bearbeitet werden
- Repo-Import beim Aufklappen hoechstens einmal pro Minute

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 13:23:01 +00:00

32 lines
1.1 KiB
JavaScript

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, der naechste Versuch wartet trotzdem die Minute ab', async () => {
const throttled = throttleRuns(async () => { throw new Error('weg') }, 60000)
await assert.rejects(throttled(), /weg/)
assert.equal(await throttled(), null)
})