import { DatePipe } from '@angular/common'
-import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'
+import {
+ HttpHeaders,
+ HttpResponse,
+ provideHttpClient,
+ withInterceptorsFromDi,
+} from '@angular/common/http'
import {
HttpTestingController,
provideHttpClientTesting,
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()