mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2026-02-16 00:19:32 -06:00
Only append when needed
This commit is contained in:
@@ -1897,6 +1897,47 @@ describe('DocumentDetailComponent', () => {
|
|||||||
expect(urlRevokeSpy).toHaveBeenCalled()
|
expect(urlRevokeSpy).toHaveBeenCalled()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('should include version in download and print only for non-latest selected version', () => {
|
||||||
|
initNormally()
|
||||||
|
component.document.versions = [
|
||||||
|
{ id: doc.id, is_root: true },
|
||||||
|
{ id: 10, is_root: false },
|
||||||
|
] as any
|
||||||
|
|
||||||
|
const getDownloadUrlSpy = jest
|
||||||
|
.spyOn(documentService, 'getDownloadUrl')
|
||||||
|
.mockReturnValueOnce('download-latest')
|
||||||
|
.mockReturnValueOnce('print-latest')
|
||||||
|
.mockReturnValueOnce('download-non-latest')
|
||||||
|
.mockReturnValueOnce('print-non-latest')
|
||||||
|
|
||||||
|
component.selectedVersionId = 10
|
||||||
|
component.download()
|
||||||
|
expect(getDownloadUrlSpy).toHaveBeenNthCalledWith(1, doc.id, false, null)
|
||||||
|
httpTestingController
|
||||||
|
.expectOne('download-latest')
|
||||||
|
.error(new ProgressEvent('failed'))
|
||||||
|
|
||||||
|
component.printDocument()
|
||||||
|
expect(getDownloadUrlSpy).toHaveBeenNthCalledWith(2, doc.id, false, null)
|
||||||
|
httpTestingController
|
||||||
|
.expectOne('print-latest')
|
||||||
|
.error(new ProgressEvent('failed'))
|
||||||
|
|
||||||
|
component.selectedVersionId = doc.id
|
||||||
|
component.download()
|
||||||
|
expect(getDownloadUrlSpy).toHaveBeenNthCalledWith(3, doc.id, false, doc.id)
|
||||||
|
httpTestingController
|
||||||
|
.expectOne('download-non-latest')
|
||||||
|
.error(new ProgressEvent('failed'))
|
||||||
|
|
||||||
|
component.printDocument()
|
||||||
|
expect(getDownloadUrlSpy).toHaveBeenNthCalledWith(4, doc.id, false, doc.id)
|
||||||
|
httpTestingController
|
||||||
|
.expectOne('print-non-latest')
|
||||||
|
.error(new ProgressEvent('failed'))
|
||||||
|
})
|
||||||
|
|
||||||
it('should download a file with the correct filename', () => {
|
it('should download a file with the correct filename', () => {
|
||||||
const mockBlob = new Blob(['test content'], { type: 'text/plain' })
|
const mockBlob = new Blob(['test content'], { type: 'text/plain' })
|
||||||
const mockResponse = new HttpResponse({
|
const mockResponse = new HttpResponse({
|
||||||
|
|||||||
@@ -1399,11 +1399,24 @@ export class DocumentDetailComponent
|
|||||||
this.versionUploadError = null
|
this.versionUploadError = null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private getSelectedNonLatestVersionId(): number | null {
|
||||||
|
const versions = this.document?.versions ?? []
|
||||||
|
if (!versions.length || !this.selectedVersionId) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
const latestVersionId = Math.max(...versions.map((version) => version.id))
|
||||||
|
return this.selectedVersionId === latestVersionId
|
||||||
|
? null
|
||||||
|
: this.selectedVersionId
|
||||||
|
}
|
||||||
|
|
||||||
download(original: boolean = false) {
|
download(original: boolean = false) {
|
||||||
this.downloading = true
|
this.downloading = true
|
||||||
|
const selectedVersionId = this.getSelectedNonLatestVersionId()
|
||||||
const downloadUrl = this.documentsService.getDownloadUrl(
|
const downloadUrl = this.documentsService.getDownloadUrl(
|
||||||
this.selectedVersionId || this.documentId,
|
this.documentId,
|
||||||
original
|
original,
|
||||||
|
selectedVersionId
|
||||||
)
|
)
|
||||||
this.http
|
this.http
|
||||||
.get(downloadUrl, { observe: 'response', responseType: 'blob' })
|
.get(downloadUrl, { observe: 'response', responseType: 'blob' })
|
||||||
@@ -1835,9 +1848,11 @@ export class DocumentDetailComponent
|
|||||||
}
|
}
|
||||||
|
|
||||||
printDocument() {
|
printDocument() {
|
||||||
|
const selectedVersionId = this.getSelectedNonLatestVersionId()
|
||||||
const printUrl = this.documentsService.getDownloadUrl(
|
const printUrl = this.documentsService.getDownloadUrl(
|
||||||
this.document.id,
|
this.document.id,
|
||||||
false
|
false,
|
||||||
|
selectedVersionId
|
||||||
)
|
)
|
||||||
this.http
|
this.http
|
||||||
.get(printUrl, { responseType: 'blob' })
|
.get(printUrl, { responseType: 'blob' })
|
||||||
|
|||||||
Reference in New Issue
Block a user