- 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>
32 lines
1.1 KiB
JavaScript
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)
|
|
})
|