import React from 'react'; import { describe, expect, it, vi } from 'vitest'; import { render, screen } from '@testing-library/react'; const fixtures = vi.hoisted(() => ({ event: { id: 1, name: 'Demo Event', slug: 'demo-event', }, invites: [ { id: 1, url: 'https://example.test/guest/demo-event', qr_code_data_url: '', layouts: [ { id: 'layout-1', name: 'Poster Layout', description: 'Layout description', paper: 'a4', orientation: 'portrait', panel_mode: 'single', }, ], }, ], })); vi.mock('react-router-dom', () => ({ useNavigate: () => vi.fn(), useParams: () => ({ slug: fixtures.event.slug, tokenId: '1' }), useSearchParams: () => [new URLSearchParams(), vi.fn()], })); vi.mock('react-i18next', () => ({ useTranslation: () => ({ t: (key: string, fallback?: string | Record) => { if (typeof fallback === 'string') { return fallback; } if (fallback && typeof fallback === 'object' && typeof fallback.defaultValue === 'string') { return fallback.defaultValue; } return key; }, }), })); vi.mock('../hooks/useBackNavigation', () => ({ useBackNavigation: () => undefined, })); vi.mock('../../api', () => ({ getEvent: vi.fn().mockResolvedValue(fixtures.event), getEventQrInvites: vi.fn().mockResolvedValue(fixtures.invites), updateEventQrInvite: vi.fn(), })); vi.mock('../../auth/tokens', () => ({ isAuthError: () => false, })); vi.mock('../../lib/apiError', () => ({ getApiErrorMessage: () => 'error', })); vi.mock('../../lib/fonts', () => ({ useTenantFonts: () => ({ fonts: [] }), ensureFontLoaded: vi.fn(), })); vi.mock('react-hot-toast', () => ({ default: { error: vi.fn(), success: vi.fn(), }, })); vi.mock('./invite-layout/export-utils', () => ({ generatePdfBytes: vi.fn(), generatePngDataUrl: vi.fn().mockResolvedValue('data:image/png;base64,abc'), triggerDownloadFromBlob: vi.fn(), triggerDownloadFromDataUrl: vi.fn(), })); vi.mock('../components/MobileShell', () => ({ MobileShell: ({ children }: { children: React.ReactNode }) =>
{children}
, HeaderActionButton: ({ children }: { children: React.ReactNode }) =>
{children}
, })); vi.mock('../components/Primitives', () => ({ MobileCard: ({ children }: { children: React.ReactNode }) =>
{children}
, CTAButton: ({ label }: { label: string }) => , PillBadge: ({ children }: { children: React.ReactNode }) =>
{children}
, })); vi.mock('../components/FormControls', () => ({ MobileInput: (props: React.InputHTMLAttributes) => , MobileTextArea: (props: React.TextareaHTMLAttributes) =>