test(documents): smoke-cover the edit page with confirm-service mock

Renders the document edit page with mocked confirm service. Verifies
DocumentEditLayout mounts, both hidden submit-target forms (review and
delete) exist, and the delete button is present in the action bar.

3 tests covering the orchestration entry path of documents/[id]/edit.

Refs #496.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Marcel
2026-05-10 01:10:45 +02:00
parent bf1ec51927
commit a77a5d008e

View File

@@ -0,0 +1,59 @@
import { describe, it, expect, vi, afterEach } from 'vitest';
import { cleanup, render } from 'vitest-browser-svelte';
vi.mock('$lib/shared/services/confirm.svelte.js', () => ({
getConfirmService: () => ({ confirm: async () => false })
}));
const { default: DocumentEditPage } = await import('./+page.svelte');
afterEach(cleanup);
const baseDoc = {
id: 'd1',
title: 'Brief an Helene',
originalFilename: 'brief.pdf',
documentDate: '1923-04-15',
sender: null,
receivers: [],
tags: [],
filePath: null,
contentType: null,
location: null,
status: 'UPLOADED',
fileHash: null
};
const baseData = (overrides: Record<string, unknown> = {}) => ({
document: baseDoc,
...overrides
});
describe('documents/[id]/edit page', () => {
it('renders the page with the DocumentEditLayout', async () => {
render(DocumentEditPage, { props: { data: baseData(), form: undefined } });
// At minimum, the body has content
const main = document.body.firstElementChild;
expect(main).not.toBeNull();
});
it('renders both hidden submit-target forms', async () => {
render(DocumentEditPage, { props: { data: baseData(), form: undefined } });
const reviewForm = document.querySelector('form#mark-for-review-form');
const deleteForm = document.querySelector('form#delete-form');
expect(reviewForm).not.toBeNull();
expect(deleteForm).not.toBeNull();
});
it('renders the action bar with delete, cancel, mark-for-review, and save buttons/links', async () => {
render(DocumentEditPage, { props: { data: baseData(), form: undefined } });
// Find delete button
const deleteBtn = Array.from(document.querySelectorAll('button')).find((b) =>
b.textContent?.includes('Löschen')
);
expect(deleteBtn).toBeDefined();
});
});