X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/30ef6aaa179aa1d18e70e2a54b1a997146328147..af30470573cfe6627ef39aae023f92d846f1b132:/src/services/collection-service/collection-service.test.ts diff --git a/src/services/collection-service/collection-service.test.ts b/src/services/collection-service/collection-service.test.ts index b759fd1a..4be17213 100644 --- a/src/services/collection-service/collection-service.test.ts +++ b/src/services/collection-service/collection-service.test.ts @@ -4,7 +4,8 @@ import axios, { AxiosInstance } from 'axios'; import MockAdapter from 'axios-mock-adapter'; -import { CollectionResource } from 'models/collection'; +import { snakeCase } from 'lodash'; +import { CollectionResource, defaultCollectionSelectedFields } from 'models/collection'; import { AuthService } from '../auth-service/auth-service'; import { CollectionService } from './collection-service'; @@ -21,6 +22,7 @@ describe('collection-service', () => { axiosMock = new MockAdapter(serverApi); webdavClient = { delete: jest.fn(), + upload: jest.fn(), } as any; authService = {} as AuthService; actions = { @@ -31,17 +33,16 @@ describe('collection-service', () => { }); describe('get', () => { - it('should make a list request with uuid filtering', async () => { + it('should make a request with default selected fields', async () => { serverApi.get = jest.fn(() => Promise.resolve( { data: { items: [{}] } } )); const uuid = 'zzzzz-4zz18-0123456789abcde' await collectionService.get(uuid); expect(serverApi.get).toHaveBeenCalledWith( - '/collections', { + `/collections/${uuid}`, { params: { - filters: `[["uuid","=","zzzzz-4zz18-0123456789abcde"]]`, - include_old_versions: true, + select: JSON.stringify(defaultCollectionSelectedFields.map(snakeCase)), }, } ); @@ -54,10 +55,8 @@ describe('collection-service', () => { const uuid = 'zzzzz-4zz18-0123456789abcde' await collectionService.get(uuid, undefined, ['manifestText']); expect(serverApi.get).toHaveBeenCalledWith( - '/collections', { + `/collections/${uuid}`, { params: { - filters: `[["uuid","=","zzzzz-4zz18-0123456789abcde"]]`, - include_old_versions: true, select: `["manifest_text"]` }, } @@ -84,6 +83,47 @@ describe('collection-service', () => { }); }); + describe('uploadFiles', () => { + it('should skip if no files to upload files', async () => { + // given + const files: File[] = []; + const collectionUUID = ''; + + // when + await collectionService.uploadFiles(collectionUUID, files); + + // then + expect(webdavClient.upload).not.toHaveBeenCalled(); + }); + + it('should upload files', async () => { + // given + const files: File[] = [{name: 'test-file1'} as File]; + const collectionUUID = 'zzzzz-4zz18-0123456789abcde'; + + // when + await collectionService.uploadFiles(collectionUUID, files); + + // then + expect(webdavClient.upload).toHaveBeenCalledTimes(1); + expect(webdavClient.upload.mock.calls[0][0]).toEqual("c=zzzzz-4zz18-0123456789abcde/test-file1"); + }); + + it('should upload files with custom uplaod target', async () => { + // given + const files: File[] = [{name: 'test-file1'} as File]; + const collectionUUID = 'zzzzz-4zz18-0123456789abcde'; + const customTarget = 'zzzzz-4zz18-0123456789adddd/test-path/' + + // when + await collectionService.uploadFiles(collectionUUID, files, undefined, customTarget); + + // then + expect(webdavClient.upload).toHaveBeenCalledTimes(1); + expect(webdavClient.upload.mock.calls[0][0]).toEqual("c=zzzzz-4zz18-0123456789adddd/test-path/test-file1"); + }); + }); + describe('deleteFiles', () => { it('should remove no files', async () => { // given @@ -125,4 +165,4 @@ describe('collection-service', () => { expect(webdavClient.delete).toHaveBeenCalledWith("c=zzzzz-tpzed-5o5tg0l9a57gxxx/root/1"); }); }); -}); \ No newline at end of file +});