50 lines
2.4 KiB
TypeScript
50 lines
2.4 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
|
|
import { resolveUploadErrorDialog } from '../uploadErrorDialog';
|
|
|
|
const translations = new Map<string, string>([
|
|
['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.');
|
|
});
|
|
});
|