Add onProgress callback to PutConfig
authorMichal Klobukowski <michal.klobukowski@contractors.roche.com>
Thu, 9 Aug 2018 14:01:03 +0000 (16:01 +0200)
committerMichal Klobukowski <michal.klobukowski@contractors.roche.com>
Thu, 9 Aug 2018 14:01:03 +0000 (16:01 +0200)
Feature #13989

Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski <michal.klobukowski@contractors.roche.com>

src/common/webdav.test.ts
src/common/webdav.ts

index 7da15858690c40b68a21a4622324d60cd83b1894..63771688cee94adbdbf37655f31e5c4b999039e5 100644 (file)
@@ -27,13 +27,16 @@ describe('WebDAV', () => {
     });
 
     it('PUT', async () => {
-        const { open, send, load, createRequest } = mockCreateRequest();
+        const { open, send, load, progress, createRequest } = mockCreateRequest();
+        const onProgress = jest.fn();
         const webdav = WebDAV.create(undefined, createRequest);
-        const promise = webdav.put('foo', { data: 'Test data' });
+        const promise = webdav.put('foo', { data: 'Test data', onProgress });
+        progress();
         load();
         const request = await promise;
         expect(open).toHaveBeenCalledWith('PUT', 'foo');
         expect(send).toHaveBeenCalledWith('Test data');
+        expect(onProgress).toHaveBeenCalled();
         expect(request).toBeInstanceOf(XMLHttpRequest);
     });
 
@@ -79,10 +82,12 @@ const mockCreateRequest = () => {
     request.open = open;
     request.setRequestHeader = setRequestHeader;
     const load = () => request.dispatchEvent(new Event('load'));
+    const progress = () => request.dispatchEvent(new Event('progress'));
     return {
         send,
         open,
         load,
+        progress,
         setRequestHeader,
         createRequest: () => request
     };
index 24dacbdedd6ca6f6fb39264d5803db03aec25096..6b56f12409f15d03344f15a6866cb903dbe51eac 100644 (file)
@@ -77,6 +77,7 @@ export interface PropfindConfig extends BaseConfig { }
 
 export interface PutConfig extends BaseConfig {
     data?: any;
+    onProgress?: (event: ProgressEvent) => void;
 }
 
 export interface CopyConfig extends BaseConfig {