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';
axiosMock = new MockAdapter(serverApi);
webdavClient = {
delete: jest.fn(),
+ upload: jest.fn(),
} as any;
authService = {} as AuthService;
actions = {
});
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)),
},
}
);
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"]`
},
}
});
});
+ 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
expect(webdavClient.delete).toHaveBeenCalledWith("c=zzzzz-tpzed-5o5tg0l9a57gxxx/root/1");
});
});
-});
\ No newline at end of file
+});