From 2ee1d7540e388882d90f68c9993e18600abae0e8 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Wed, 9 Apr 2025 09:07:51 -0700 Subject: [PATCH] Chore: add coverage for frontend download content-disposition parsing --- .../document-detail.component.spec.ts | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/src-ui/src/app/components/document-detail/document-detail.component.spec.ts b/src-ui/src/app/components/document-detail/document-detail.component.spec.ts index b85a7eaf4..76517d336 100644 --- a/src-ui/src/app/components/document-detail/document-detail.component.spec.ts +++ b/src-ui/src/app/components/document-detail/document-detail.component.spec.ts @@ -1,5 +1,10 @@ import { DatePipe } from '@angular/common' -import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http' +import { + HttpHeaders, + HttpResponse, + provideHttpClient, + withInterceptorsFromDi, +} from '@angular/common/http' import { HttpTestingController, provideHttpClientTesting, @@ -1331,6 +1336,34 @@ describe('DocumentDetailComponent', () => { expect(urlRevokeSpy).toHaveBeenCalled() }) + it('should download a file with the correct filename', () => { + const mockBlob = new Blob(['test content'], { type: 'text/plain' }) + const mockResponse = new HttpResponse({ + body: mockBlob, + headers: new HttpHeaders({ + 'Content-Disposition': 'attachment; filename="test-file.txt"', + }), + }) + + const downloadUrl = 'http://example.com/download' + component.documentId = 123 + jest.spyOn(documentService, 'getDownloadUrl').mockReturnValue(downloadUrl) + + const createSpy = jest.spyOn(document, 'createElement') + const anchor: HTMLAnchorElement = {} as HTMLAnchorElement + createSpy.mockReturnValueOnce(anchor) + + component.download(false) + + httpTestingController + .expectOne(downloadUrl) + .flush(mockBlob, { headers: mockResponse.headers }) + + expect(createSpy).toHaveBeenCalledWith('a') + expect(anchor.download).toBe('test-file.txt') + createSpy.mockClear() + }) + it('should get email enabled status from settings', () => { jest.spyOn(settingsService, 'get').mockReturnValue(true) expect(component.emailEnabled).toBeTruthy()