test: cover OcrTrigger, CoCorrespondentsList, reset-password page
OcrTrigger: select initialisation from storedScriptType (with the UNKNOWN sentinel collapsing to empty), button disabled-state matrix across blockCount × scriptType, onTrigger callback wiring, no-annotations hint visibility. CoCorrespondentsList: empty-list early return, populated heading + hint, chip count and links, initials-from-up-to-two-name-parts logic. reset-password page: form/success branches, hidden-token rendering with null fallback, MISMATCH vs generic error code mapping, back-to-login link. 21 tests across three files. Refs #496. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
import { describe, it, expect, afterEach } from 'vitest';
|
||||
import { cleanup, render } from 'vitest-browser-svelte';
|
||||
import { page } from 'vitest/browser';
|
||||
import CoCorrespondentsList from './CoCorrespondentsList.svelte';
|
||||
|
||||
afterEach(cleanup);
|
||||
|
||||
describe('CoCorrespondentsList', () => {
|
||||
it('renders nothing when the coCorrespondents list is empty', async () => {
|
||||
render(CoCorrespondentsList, {
|
||||
props: { coCorrespondents: [], personId: 'p-1' }
|
||||
});
|
||||
|
||||
await expect
|
||||
.element(page.getByRole('heading', { name: /häufige korrespondenten/i }))
|
||||
.not.toBeInTheDocument();
|
||||
});
|
||||
|
||||
it('renders the heading and hint when there is at least one co-correspondent', async () => {
|
||||
render(CoCorrespondentsList, {
|
||||
props: {
|
||||
coCorrespondents: [{ id: 'c-1', name: 'Max Mustermann', count: 3 }],
|
||||
personId: 'p-1'
|
||||
}
|
||||
});
|
||||
|
||||
await expect
|
||||
.element(page.getByRole('heading', { name: /häufige korrespondenten/i }))
|
||||
.toBeVisible();
|
||||
await expect.element(page.getByText('klicken für Konversation')).toBeVisible();
|
||||
});
|
||||
|
||||
it('renders one chip per co-correspondent with name and count', async () => {
|
||||
render(CoCorrespondentsList, {
|
||||
props: {
|
||||
coCorrespondents: [
|
||||
{ id: 'c-1', name: 'Max Mustermann', count: 3 },
|
||||
{ id: 'c-2', name: 'Erika Beispiel', count: 1 }
|
||||
],
|
||||
personId: 'p-1'
|
||||
}
|
||||
});
|
||||
|
||||
await expect.element(page.getByText('Max Mustermann')).toBeVisible();
|
||||
await expect.element(page.getByText('Erika Beispiel')).toBeVisible();
|
||||
await expect.element(page.getByText('×3')).toBeVisible();
|
||||
await expect.element(page.getByText('×1')).toBeVisible();
|
||||
});
|
||||
|
||||
it('points each chip to the bilateral conversation route with the correct ids', async () => {
|
||||
render(CoCorrespondentsList, {
|
||||
props: {
|
||||
coCorrespondents: [{ id: 'c-1', name: 'Max Mustermann', count: 3 }],
|
||||
personId: 'p-1'
|
||||
}
|
||||
});
|
||||
|
||||
await expect
|
||||
.element(page.getByRole('link', { name: /max mustermann/i }))
|
||||
.toHaveAttribute('href', '/briefwechsel?senderId=p-1&receiverId=c-1');
|
||||
});
|
||||
|
||||
it('builds initials from up to two name parts', async () => {
|
||||
render(CoCorrespondentsList, {
|
||||
props: {
|
||||
coCorrespondents: [{ id: 'c-1', name: 'Max Mustermann Beispiel', count: 1 }],
|
||||
personId: 'p-1'
|
||||
}
|
||||
});
|
||||
|
||||
await expect.element(page.getByText('MM')).toBeVisible();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user