52 lines
1.5 KiB
TypeScript
52 lines
1.5 KiB
TypeScript
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();
|
||
});
|
||
});
|