import { describe, expect, it } from 'vitest'; import { resolveUploadErrorDialog } from '../uploadErrorDialog'; const translations = new Map([ ['upload.dialogs.photoLimit.title', 'Upload-Limit erreicht'], ['upload.dialogs.photoLimit.description', 'Es wurden {used} von {limit} Fotos hochgeladen. Es bleiben {remaining}.'], ['upload.dialogs.photoLimit.hint', 'Wende dich an das Team.'], ['upload.dialogs.deviceLimit.title', 'Dieses Gerät ist voll'], ['upload.dialogs.deviceLimit.description', 'Du hast das Geräte-Limit erreicht.'], ['upload.dialogs.deviceLimit.hint', 'Nutze ein anderes Gerät oder kontaktiere das Team.'], ['upload.dialogs.packageMissing.title', 'Event nicht bereit'], ['upload.dialogs.packageMissing.description', 'Das Event akzeptiert aktuell keine Uploads.'], ['upload.dialogs.packageMissing.hint', 'Frag die Veranstalter:innen nach dem Status.'], ['upload.dialogs.galleryExpired.title', 'Galerie abgelaufen'], ['upload.dialogs.galleryExpired.description', 'Uploads sind nicht mehr möglich.'], ['upload.dialogs.galleryExpired.hint', 'Bitte wende dich an die Veranstalter:innen.'], ['upload.dialogs.csrf.title', 'Sicherheitsabgleich erforderlich'], ['upload.dialogs.csrf.description', 'Bitte lade die Seite neu und versuche es erneut.'], ['upload.dialogs.csrf.hint', 'Aktualisiere die Seite.'], ['upload.dialogs.generic.title', 'Upload fehlgeschlagen'], ['upload.dialogs.generic.description', 'Der Upload konnte nicht abgeschlossen werden.'], ['upload.dialogs.generic.hint', 'Versuche es später erneut.'], ]); const t = (key: string) => translations.get(key) ?? key; describe('resolveUploadErrorDialog', () => { it('renders photo limit dialog with placeholders', () => { const dialog = resolveUploadErrorDialog( 'photo_limit_exceeded', { used: 120, limit: 120, remaining: 0 }, t ); expect(dialog.title).toBe('Upload-Limit erreicht'); expect(dialog.description).toBe('Es wurden 120 von 120 Fotos hochgeladen. Es bleiben 0.'); expect(dialog.hint).toBe('Wende dich an das Team.'); expect(dialog.tone).toBe('danger'); }); it('falls back to generic dialog when code is unknown', () => { const dialog = resolveUploadErrorDialog('something_else', undefined, t); expect(dialog.tone).toBe('info'); expect(dialog.title).toBe('Upload fehlgeschlagen'); expect(dialog.description).toBe('Der Upload konnte nicht abgeschlossen werden.'); }); });