diff --git a/alfa-client/libs/binary-file-shared/src/lib/binary-file.model.ts b/alfa-client/libs/binary-file-shared/src/lib/binary-file.model.ts index ad066e5dcc84ed8ed7f48b258a2d32eaeefcca7d..07f2665c2046be73550819818b326b538bd520fc 100644 --- a/alfa-client/libs/binary-file-shared/src/lib/binary-file.model.ts +++ b/alfa-client/libs/binary-file-shared/src/lib/binary-file.model.ts @@ -22,7 +22,7 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ import { ListResource, StateResource } from '@alfa-client/tech-shared'; -import { Resource, ResourceUri } from '@ngxp/rest'; +import { Resource } from '@ngxp/rest'; import { Observable } from 'rxjs'; export interface BinaryFile { @@ -38,13 +38,13 @@ export interface BinaryFileListResource extends ListResource {} export interface ToUploadFile { type: FileUploadType; file: File; - uri: ResourceUri; + uploadUrl: string; } export declare type FileUploadType = string; export interface UploadFile { - type: FileUploadType; + key: string; fileToUpload: File; uploadedFile: Observable<StateResource<BinaryFileResource>>; } diff --git a/alfa-client/libs/binary-file-shared/src/lib/binary-file.service.spec.ts b/alfa-client/libs/binary-file-shared/src/lib/binary-file.service.spec.ts index 4b9200a09313ae46fbd06a99a269947faffb72ce..220a76d52a8b47ff3a4321bde8115abc1b7538de 100644 --- a/alfa-client/libs/binary-file-shared/src/lib/binary-file.service.spec.ts +++ b/alfa-client/libs/binary-file-shared/src/lib/binary-file.service.spec.ts @@ -68,7 +68,7 @@ describe('BinaryFileService', () => { describe('is upload in progress', () => { const type: FileUploadType = 'DummyType'; const uploadFile: UploadFile = { - type, + key: faker.string.uuid(), fileToUpload: createFile(), uploadedFile: of(createEmptyStateResource<BinaryFileResource>(true)), }; @@ -87,7 +87,7 @@ describe('BinaryFileService', () => { describe('get uploaded files', () => { const type: FileUploadType = 'DummyType'; const uploadFile: UploadFile = { - type, + key: faker.string.uuid(), fileToUpload: createFile(), uploadedFile: of(createStateResource(createBinaryFileResource())), }; @@ -104,19 +104,23 @@ describe('BinaryFileService', () => { }); }); + describe('remove uploaded file', () => { + //Implement me + }); + describe('upload file new', () => { const file: File = createFile(); - const uri: ResourceUri = faker.internet.url(); + const uploadUrl: string = faker.internet.url(); const type: FileUploadType = 'dummyType'; - const toUploadFile: ToUploadFile = { file, uri, type }; + const toUploadFile: ToUploadFile = { file, uploadUrl, type }; const binaryFileResource: BinaryFileResource = createBinaryFileResource(); const binaryFileStateResource: StateResource<BinaryFileResource> = createStateResource(binaryFileResource); const binaryFileStateResource$: Observable<StateResource<BinaryFileResource>> = of(createStateResource(binaryFileResource)); - const uploadFile: UploadFile = { type, fileToUpload: file, uploadedFile: binaryFileStateResource$ }; + const uploadFile: UploadFile = { key: faker.string.uuid(), fileToUpload: file, uploadedFile: binaryFileStateResource$ }; it('should push entry to uploaded files', () => { service._buildUploadFile = jest.fn().mockReturnValue(uploadFile); @@ -152,7 +156,7 @@ describe('BinaryFileService', () => { service._handleUpload(toUploadFile); - expect(repository.uploadFileNew).toHaveBeenCalledWith(uri, file); + expect(repository.uploadFileNew).toHaveBeenCalledWith(uploadUrl, file); }); it('should return start and first value', () => { diff --git a/alfa-client/libs/binary-file-shared/src/lib/binary-file.service.ts b/alfa-client/libs/binary-file-shared/src/lib/binary-file.service.ts index 5c734dbe76d0ff81b81596dba89011cf312044ac..b07c5227429ca08dbcc8670c09243a3cdf0d91c7 100644 --- a/alfa-client/libs/binary-file-shared/src/lib/binary-file.service.ts +++ b/alfa-client/libs/binary-file-shared/src/lib/binary-file.service.ts @@ -40,6 +40,7 @@ import { import { SnackBarService } from '@alfa-client/ui'; import { HttpErrorResponse, HttpResponse } from '@angular/common/http'; import { Injectable } from '@angular/core'; +import { faker } from '@faker-js/faker/.'; import { getUrl, Resource, ResourceUri } from '@ngxp/rest'; import { saveAs } from 'file-saver'; import { isNil } from 'lodash-es'; @@ -76,22 +77,26 @@ export class BinaryFileService { return this.uploadFiles.asObservable().pipe(map((files: UploadFilesByType) => files[type])); } + public deleteUploadedFile(type: FileUploadType, key: string): void { + //Implement me + } + //TODO Rename public uploadFileNew(toUploadFile: ToUploadFile): void { - if (!(toUploadFile.uri in this.uploadFiles.value)) this.uploadFiles.value[toUploadFile.type] = EMPTY_ARRAY; + if (!(toUploadFile.uploadUrl in this.uploadFiles.value)) this.uploadFiles.value[toUploadFile.type] = EMPTY_ARRAY; this.uploadFiles.value[toUploadFile.type].push(this._buildUploadFile(toUploadFile)); } _buildUploadFile(toUploadFile: ToUploadFile): UploadFile { return { - type: toUploadFile.type, + key: faker.string.uuid(), fileToUpload: toUploadFile.file, uploadedFile: this._handleUpload(toUploadFile), }; } _handleUpload(toUploadFile: ToUploadFile): Observable<StateResource<BinaryFileResource>> { - return this.repository.uploadFileNew(toUploadFile.uri, toUploadFile.file).pipe( + return this.repository.uploadFileNew(toUploadFile.uploadUrl, toUploadFile.file).pipe( map((binaryFileResource: BinaryFileResource) => createStateResource(binaryFileResource)), catchError((response: any) => of(createErrorStateResource(<HttpError>response.error))), startWith(createEmptyStateResource<BinaryFileResource>(true)),