diff --git a/frontend/src/lib/components/document/BulkDocumentEditLayout.svelte.spec.ts b/frontend/src/lib/components/document/BulkDocumentEditLayout.svelte.spec.ts index 1b24627d..a135847a 100644 --- a/frontend/src/lib/components/document/BulkDocumentEditLayout.svelte.spec.ts +++ b/frontend/src/lib/components/document/BulkDocumentEditLayout.svelte.spec.ts @@ -3,6 +3,7 @@ import { goto } from '$app/navigation'; import { cleanup, render } from 'vitest-browser-svelte'; import { page, userEvent } from 'vitest/browser'; import BulkDocumentEditLayout from './BulkDocumentEditLayout.svelte'; +import { createConfirmService, CONFIRM_KEY } from '$lib/services/confirm.svelte.js'; vi.mock('$app/navigation', () => ({ goto: vi.fn() })); @@ -289,6 +290,29 @@ describe('BulkDocumentEditLayout', () => { expect(mockFetch).toHaveBeenCalledTimes(1); }); + it('discard-all does not clear files when the user cancels the confirm dialog', async () => { + const service = createConfirmService(); + const { container } = render(BulkDocumentEditLayout, { + context: new Map([[CONFIRM_KEY, service]]) + }); + await addFilesViaInput(container, [makeFile('a.pdf'), makeFile('b.pdf')]); + + const discardBtn = container.querySelector( + 'button[data-testid="discard-all-btn"]' + ) as HTMLButtonElement; + discardBtn.click(); + + // The confirm dialog should open (service.options not null) + await vi.waitFor(() => expect(service.options).not.toBeNull(), { timeout: 1000 }); + + // Cancel — files should remain + service.settle(false); + await vi.waitFor( + () => expect(container.querySelector('[data-testid="file-switcher-strip"]')).not.toBeNull(), + { timeout: 1000 } + ); + }); + it('discard-all resets to N=0 state and shows drop zone', async () => { const { container } = render(BulkDocumentEditLayout, {}); await addFilesViaInput(container, [makeFile('a.pdf'), makeFile('b.pdf')]);