From 44d2fc4b3d47c06fabe165e54e450fe1dea5e80d Mon Sep 17 00:00:00 2001 From: Marcel Date: Sun, 10 May 2026 06:14:42 +0200 Subject: [PATCH] test(documents): expand documents/[id]/edit page coverage Adds doc.title, originalFilename fallback, cancel link href, form.error pass-through. 4 new tests covering ~6 branches. Refs #496. Co-Authored-By: Claude Sonnet 4.6 --- .../documents/[id]/edit/page.svelte.test.ts | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/frontend/src/routes/documents/[id]/edit/page.svelte.test.ts b/frontend/src/routes/documents/[id]/edit/page.svelte.test.ts index 0be5a7b9..fb1ffdb4 100644 --- a/frontend/src/routes/documents/[id]/edit/page.svelte.test.ts +++ b/frontend/src/routes/documents/[id]/edit/page.svelte.test.ts @@ -56,4 +56,39 @@ describe('documents/[id]/edit page', () => { ); expect(deleteBtn).toBeDefined(); }); + + it('uses doc.title in the document title when set', async () => { + render(DocumentEditPage, { props: { data: baseData(), form: undefined } }); + + await new Promise((r) => setTimeout(r, 30)); + expect(document.title).toContain('Brief an Helene'); + }); + + it('falls back to originalFilename when title is empty', async () => { + render(DocumentEditPage, { + props: { + data: baseData({ document: { ...baseDoc, title: '', originalFilename: 'fallback.pdf' } }), + form: undefined + } + }); + + await new Promise((r) => setTimeout(r, 30)); + expect(document.title).toContain('fallback.pdf'); + }); + + it('renders the cancel link to the document detail page', async () => { + render(DocumentEditPage, { props: { data: baseData(), form: undefined } }); + + const link = document.querySelector('a[href="/documents/d1"]'); + expect(link).not.toBeNull(); + }); + + it('passes form.error to DocumentEditLayout when form is set', async () => { + render(DocumentEditPage, { + props: { data: baseData(), form: { error: 'Save failed' } } + }); + + // Layout shows the form error in a banner — at minimum, error text is in the DOM + expect(document.body.textContent).toContain('Save failed'); + }); });