import { describe, expect, it, vi } from 'vitest'; import { render } from 'vitest-browser-svelte'; import { page } from 'vitest/browser'; import DocumentList from './DocumentList.svelte'; vi.mock('$app/navigation', () => ({ goto: vi.fn() })); const baseProps = { documents: [], canWrite: false, error: null, total: 0, q: '' }; const makeDoc = () => ({ id: '1', title: 'Testbrief', originalFilename: 'testbrief.pdf', status: 'UPLOADED' as const, documentDate: '2024-03-15', location: null, sender: null, receivers: [], tags: [] }); describe('DocumentList – result count', () => { it('shows result count when total > 0', async () => { render(DocumentList, { ...baseProps, documents: [makeDoc()], total: 1, q: 'test' }); await expect.element(page.getByText('1 Dokumente')).toBeInTheDocument(); }); it('does not show result count when total is 0 and there is no error', async () => { render(DocumentList, { ...baseProps, total: 0, q: '' }); const count = page.getByText(/\d+ Dokumente/); await expect.element(count).not.toBeInTheDocument(); }); }); describe('DocumentList – empty state with search term', () => { it('shows generic empty heading when q is empty', async () => { render(DocumentList, { ...baseProps }); await expect.element(page.getByText(/Keine Dokumente/)).toBeInTheDocument(); }); it('shows search term in empty state when q is set', async () => { render(DocumentList, { ...baseProps, q: 'Urlaub' }); await expect.element(page.getByText(/"Urlaub"/)).toBeInTheDocument(); }); });