18834: Unit tests added 18834-uploading-a-file-into-a-subdirectory-of-a-collection-does-not-work
authorDaniel Kutyła <daniel.kutyla@contractors.roche.com>
Tue, 5 Apr 2022 15:11:04 +0000 (17:11 +0200)
committerDaniel Kutyła <daniel.kutyla@contractors.roche.com>
Tue, 5 Apr 2022 15:11:04 +0000 (17:11 +0200)
Arvados-DCO-1.1-Signed-off-by: Daniel Kutyła <daniel.kutyla@contractors.roche.com>

cypress/integration/collection.spec.js
src/components/collection-panel-files/collection-panel-files.tsx
src/services/collection-service/collection-service.test.ts

index 2ce6bcd55db312b3da5d98d8f39b7fb5233c326d..74acd056ffdd21e45f8f8cafb543e7447542982e 100644 (file)
@@ -974,8 +974,9 @@ describe('Collection panel tests', function () {
                             cy.get('[data-cy=drag-and-drop]').upload(content, '5mb_b.bin');
                             cy.get('[data-cy=form-submit-btn]').click();
                             cy.get('[data-cy=form-submit-btn]').should('not.exist');
-                            cy.get('[data-cy=collection-files-panel]')
+                            cy.get('[data-cy=collection-files-right-panel]')
                                  .contains('5mb_b.bin').should('exist');
+                            
                         });
                     });
                 });
index 56833f64bade2376fd68b157679d7d041bc78869..05b493636da7aad97474cc3d61b3fafdfe97e0f3 100644 (file)
@@ -446,7 +446,7 @@ export const CollectionPanelFiles = withStyles(styles)(connect((state: RootState
                 </Tooltip>
             </div>
             <div className={classes.wrapper}>
-                <div className={classNames(classes.leftPanel, path.length > 1 ? classes.leftPanelVisible : classes.leftPanelHidden)}>
+                <div className={classNames(classes.leftPanel, path.length > 1 ? classes.leftPanelVisible : classes.leftPanelHidden)}  data-cy="collection-files-left-panel">
                     <Tooltip title="Go back" className={path.length > 1 ? classes.backButton : classes.backButtonHidden}>
                         <IconButton onClick={() => setPath([...path.slice(0, path.length -1)])}>
                             <BackIcon />
@@ -498,7 +498,7 @@ export const CollectionPanelFiles = withStyles(styles)(connect((state: RootState
 
                     </div>
                 </div>
-                <div className={classes.rightPanel}>
+                <div className={classes.rightPanel} data-cy="collection-files-right-panel">
                     <div className={classes.searchWrapper}>
                         <SearchInput selfClearProp={rightKey} label="Search" value={rightSearch} onSearch={setRightSearch} />
                     </div>
index b759fd1a46d9cb622e9567196887667d71e6a9ab..4aa55ef37c3deefd74f8935ebb3902e932934a11 100644 (file)
@@ -21,6 +21,7 @@ describe('collection-service', () => {
         axiosMock = new MockAdapter(serverApi);
         webdavClient = {
             delete: jest.fn(),
+            upload: jest.fn(),
         } as any;
         authService = {} as AuthService;
         actions = {
@@ -84,6 +85,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