test(briefwechsel): expand briefwechsel page coverage

Adds timeline rendering with documents, persistRecentPerson save
path, malformed-localStorage parse fallback.

3 new tests covering ~6 branches.

Refs #496.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Marcel
2026-05-10 05:48:52 +02:00
committed by marcel
parent 39c8413c46
commit a2d432be49

View File

@@ -90,4 +90,65 @@ describe('briefwechsel/+ page', () => {
await expect.element(page.getByText(/wähle einen korrespondenten/i)).not.toBeInTheDocument();
});
it('renders the timeline when documents is non-empty', async () => {
render(BriefwechselPage, {
props: {
data: baseData({
filters: { senderId: 'p1', receiverId: 'p2', from: '', to: '', dir: 'DESC' },
initialValues: { senderName: 'Anna', receiverName: 'Bert' },
documents: [
{
id: 'd1',
title: 'Brief 1',
documentDate: '1899-04-14',
sender: { id: 'p1', displayName: 'Anna' },
receivers: [{ id: 'p2', displayName: 'Bert' }],
status: 'UPLOADED'
}
]
})
}
});
expect(document.body.textContent).toContain('Brief 1');
});
it('persists the recent person when senderName is set after navigation', async () => {
// localStorage mock — confirm no throw on parsing/writing path
localStorage.removeItem('korrespondenz_recent_persons');
expect(() =>
render(BriefwechselPage, {
props: {
data: baseData({
filters: { senderId: 'p1', receiverId: '', from: '', to: '', dir: 'DESC' },
initialValues: { senderName: 'Anna Schmidt', receiverName: '' }
})
}
})
).not.toThrow();
});
it('handles malformed localStorage data gracefully on mount', async () => {
localStorage.setItem('korrespondenz_recent_persons', 'not-json');
expect(() =>
render(BriefwechselPage, {
props: { data: baseData() }
})
).not.toThrow();
localStorage.removeItem('korrespondenz_recent_persons');
});
it('renders without throwing when senderName is set (persistRecentPerson path)', async () => {
expect(() =>
render(BriefwechselPage, {
props: {
data: baseData({
filters: { senderId: 'p-test', receiverId: '', from: '', to: '', dir: 'DESC' },
initialValues: { senderName: 'Test Person', receiverName: '' }
})
}
})
).not.toThrow();
});
});