From ae174613ffe5a22f7034a9cf70dfb014d7a8320a Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Tue, 1 Jul 2025 14:53:30 -0700 Subject: [PATCH] Testing --- .../pdf-editor/pdf-editor.component.spec.ts | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) diff --git a/src-ui/src/app/components/common/pdf-editor/pdf-editor.component.spec.ts b/src-ui/src/app/components/common/pdf-editor/pdf-editor.component.spec.ts index b1ae01b3f..434deb11d 100644 --- a/src-ui/src/app/components/common/pdf-editor/pdf-editor.component.spec.ts +++ b/src-ui/src/app/components/common/pdf-editor/pdf-editor.component.spec.ts @@ -23,6 +23,20 @@ describe('PDFEditorComponent', () => { fixture.detectChanges() }) + it('should return correct operations with no changes', () => { + component.pages = [ + { page: 1, rotate: 0, splitAfter: false }, + { page: 2, rotate: 0, splitAfter: false }, + { page: 3, rotate: 0, splitAfter: false }, + ] + const ops = component.getOperations() + expect(ops).toEqual([ + { page: 1, rotate: 0, doc: 0 }, + { page: 2, rotate: 0, doc: 0 }, + { page: 3, rotate: 0, doc: 0 }, + ]) + }) + it('should rotate, delete and reorder pages', () => { component.pages = [ { page: 1, rotate: 0, splitAfter: false, selected: false }, @@ -41,4 +55,88 @@ describe('PDFEditorComponent', () => { component.rotate(0) expect(component.pages[0].rotate).toBe(90) }) + + it('should handle empty pages array', () => { + component.pages = [] + expect(component.getOperations()).toEqual([]) + }) + + it('should increment doc index after splitAfter', () => { + component.pages = [ + { page: 1, rotate: 0, splitAfter: true }, + { page: 2, rotate: 0, splitAfter: false }, + { page: 3, rotate: 0, splitAfter: true }, + { page: 4, rotate: 0, splitAfter: false }, + ] + const ops = component.getOperations() + expect(ops).toEqual([ + { page: 1, rotate: 0, doc: 0 }, + { page: 2, rotate: 0, doc: 1 }, + { page: 3, rotate: 0, doc: 1 }, + { page: 4, rotate: 0, doc: 2 }, + ]) + }) + + it('should include rotations in operations', () => { + component.pages = [ + { page: 1, rotate: 90, splitAfter: false }, + { page: 2, rotate: 180, splitAfter: true }, + { page: 3, rotate: 270, splitAfter: false }, + ] + const ops = component.getOperations() + expect(ops).toEqual([ + { page: 1, rotate: 90, doc: 0 }, + { page: 2, rotate: 180, doc: 0 }, + { page: 3, rotate: 270, doc: 1 }, + ]) + }) + + it('should handle remove operation', () => { + component.pages = [ + { page: 1, rotate: 0, splitAfter: false, selected: false }, + { page: 2, rotate: 0, splitAfter: false, selected: true }, + { page: 3, rotate: 0, splitAfter: false, selected: false }, + ] + component.remove(1) // remove page 2 + expect(component.pages.length).toBe(2) + expect(component.pages[0].page).toBe(1) + expect(component.pages[1].page).toBe(3) + }) + + it('should toggle splitAfter correctly', () => { + component.pages = [ + { page: 1, rotate: 0, splitAfter: false }, + { page: 2, rotate: 0, splitAfter: false }, + ] + component.toggleSplit(0) + expect(component.pages[0].splitAfter).toBeTruthy() + component.toggleSplit(1) + expect(component.pages[1].splitAfter).toBeTruthy() + }) + + it('should select and deselect all pages', () => { + component.pages = [ + { page: 1, rotate: 0, splitAfter: false, selected: false }, + { page: 2, rotate: 0, splitAfter: false, selected: false }, + ] + component.selectAll() + expect(component.pages.every((p) => p.selected)).toBeTruthy() + expect(component.hasSelection()).toBeTruthy() + component.deselectAll() + expect(component.pages.every((p) => !p.selected)).toBeTruthy() + expect(component.hasSelection()).toBeFalsy() + }) + + it('should handle pdf loading and page generation', () => { + const mockPdf = { + numPages: 3, + getPage: (pageNum: number) => Promise.resolve({ pageNumber: pageNum }), + } + component.pdfLoaded(mockPdf as any) + expect(component.totalPages).toBe(3) + expect(component.pages.length).toBe(3) + expect(component.pages[0].page).toBe(1) + expect(component.pages[1].page).toBe(2) + expect(component.pages[2].page).toBe(3) + }) })