Workers P3-Endprüfung W5: Reiter Erledigt zeigt Ergebnis, Person und Zeitpunkt

Abgeschlossene Zeilen tragen jetzt ein Badge (Gesendet grün, Verworfen/Erledigt neutral) und die
Zeile "Gesendet von Anna · vor 2 Std." aus doneBy/doneAt statt des Alters ab Anlage. Menschen
(mensch:<id>) werden über die Mitarbeiterliste aufgelöst, ein Worker wie max über das
Rollen-Register als "Max (automatisch)" und nie als "Kollege". Offene Zeilen bleiben unverändert.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Sonnet 5.5 committed 2026-10-18 10:44:21 +00:00
1 parent 62e7994508
commit 4ec3022df4
4 files changed
+116 -1

No files matched your search

+29
View File
@@ -357,3 +357,32 @@ test('PultList (gerendert): Aktionen je Art und Status, Fremdtext nur als Text,
assert.match(html, /<button type="button" class="on" aria-pressed="true">Wartet<\/button><button type="button" aria-pressed="false">Veraltet<\/button><button type="button" aria-pressed="false">Erledigt<\/button>/)
} finally { delete globalThis.__pultFeed; delete globalThis.__pultEmployees }
})
// Endprüfung P3 (W5): Reiter „Erledigt“ – was wurde aus dem Eintrag, wer, wann
test('PultList (gerendert): abgeschlossene Einträge zeigen Ergebnis, Person und Zeit der Erledigung statt des Alters ab Anlage (W5)', async () => {
const { render } = await loadList()
const now = Date.now()
const iso = (ms) => new Date(ms).toISOString()
const show = (items) => {
globalThis.__pultFeed = { items, loading: false, error: null, refresh: async () => {} }
globalThis.__pultEmployees = [{ userId: 'u2', displayName: 'Anna' }]
return render({ api: {}, me: { id: 'u1', name: 'Justin' } })
}
const base = { kind: 'plattform_antwort', title: 'Suche Webdesigner', draft: 'Hallo', createdAt: iso(now - 4 * 24 * 3600e3), doneBy: 'mensch:u2', doneAt: iso(now - 2 * 3600e3) }
try {
const html = show([
{ ...base, $id: 'a', status: 'gesendet' },
{ ...base, $id: 'b', status: 'verworfen', title: 'Zweite' },
{ ...base, $id: 'c', status: 'erledigt', kind: 'unsicher', title: 'Dritte', doneBy: 'max' },
])
assert.ok(html.includes('<span class="badge green">Gesendet</span>'))
assert.ok(html.includes('<span class="badge">Verworfen</span>')); assert.ok(html.includes('<span class="badge">Erledigt</span>'))
assert.ok(html.includes('<span>Gesendet von Anna · vor 2 Std.</span>')); assert.ok(html.includes('<span>Verworfen von Anna · vor 2 Std.</span>'))
assert.ok(html.includes('<span>Erledigt von Max (automatisch) · vor 2 Std.</span>'))
assert.ok(!html.includes('vor 4 Tagen')) // das Alter ab Anlage steht bei Abgeschlossenem nicht mehr da
assert.ok(!html.includes('Kollege'))
// offene Zeile: wie bisher Alter ab Anlage, kein Ergebnis-Badge
const open = show([{ ...base, $id: 'd', status: 'offen', doneBy: undefined, doneAt: undefined }])
assert.ok(open.includes('<span>vor 4 Tagen</span>')); assert.ok(!open.includes('Gesendet')); assert.ok(!open.includes('badge green'))
} finally { delete globalThis.__pultFeed; delete globalThis.__pultEmployees }
})