diff --git a/src/js/logic/crop-pdf-page.ts b/src/js/logic/crop-pdf-page.ts index 1979436b..18794dfe 100644 --- a/src/js/logic/crop-pdf-page.ts +++ b/src/js/logic/crop-pdf-page.ts @@ -424,7 +424,7 @@ async function performFlatteningCrop( return newPdfDoc.save(); } -function resetState() { +export function resetState() { if (cropperState.cropper) { cropperState.cropper.destroy(); cropperState.cropper = null; @@ -447,4 +447,6 @@ function resetState() { const cropBtn = document.getElementById('crop-button') as HTMLButtonElement; if (cropBtn) cropBtn.disabled = true; + + window.scrollTo({ top: 0, behavior: 'smooth' }); } diff --git a/src/tests/crop-pdf-page.test.ts b/src/tests/crop-pdf-page.test.ts new file mode 100644 index 00000000..678f01e3 --- /dev/null +++ b/src/tests/crop-pdf-page.test.ts @@ -0,0 +1,18 @@ +import { describe, it, expect, vi, beforeEach } from 'vitest'; +import { resetState } from '../js/logic/crop-pdf-page.ts'; + +// Test resetState function for cropping +describe('resetState', () => { + beforeEach(() => { + vi.spyOn(window, 'scrollTo').mockImplementation(() => {}); + }); + + it('scrolls the page to the top after resetting', () => { + resetState(); + + expect(window.scrollTo).toHaveBeenCalledWith({ + top: 0, + behavior: 'smooth', + }); + }); +});