diff --git a/src/SASViyaApiClient.ts b/src/SASViyaApiClient.ts index a8d4efe..41d3878 100644 --- a/src/SASViyaApiClient.ts +++ b/src/SASViyaApiClient.ts @@ -1328,20 +1328,22 @@ export class SASViyaApiClient { targetParentFolder, accessToken ) - targetFolderName = targetFolderDetails ? sourceFolderName : targetFolderName + + if (!targetFolderDetails) { + let targetParentFolderArr = targetParentFolder.split('/') + targetParentFolderArr.splice(targetParentFolderArr.length - 1, 1) + targetParentFolder = targetParentFolderArr.join('/') + } else { + targetFolderName = sourceFolderName + } // checks if 'sourceFolder' is already a URI - const sourceFolderUri = isUri(sourceFolder) - ? sourceFolder - : await this.getFolderUri(sourceFolder, accessToken) + const sourceFolderUri = await this.getFolderUri(sourceFolder, accessToken) // checks if 'targetParentFolder' is already a URI - const targetParentFolderUri = isUri(targetParentFolder) - ? targetParentFolder - : await this.getFolderUri(targetParentFolder, accessToken) + const targetParentFolderUri = await this.getFolderUri(targetParentFolder, accessToken) const sourceFolderId = sourceFolderUri?.split('/').pop() - const url = sourceFolderUri const requestInfo = { method: 'PATCH', @@ -1357,7 +1359,7 @@ export class SASViyaApiClient { } const { result: folder } = await this.request( - `${this.serverUrl}${url}`, + `${this.serverUrl}${sourceFolderUri}`, requestInfo ).catch((err) => { if (err.code && err.code === 'ENOTFOUND') { diff --git a/src/test/FolderOperations.spec.ts b/src/test/FolderOperations.spec.ts new file mode 100644 index 0000000..116b6c4 --- /dev/null +++ b/src/test/FolderOperations.spec.ts @@ -0,0 +1,54 @@ +import { SASViyaApiClient } from '../SASViyaApiClient' + +const sampleResponse = `{ + "creationTimeStamp": "2021-01-06T14:09:27.705Z", + "modifiedTimeStamp": "2021-01-06T14:46:57.391Z", + "createdBy": "dctestuser1", + "modifiedBy": "dctestuser1", + "id": "00000-00000-00000-00000-00000", + "name": "test", + "parentFolderUri":"/folders/folders/00000-00000-00000-00000-00000", + "type": "folder", + "memberCount":"1" +}` + +describe('FolderOperations', () => { + let originalFetch: any + + const sasViyaApiClient = new SASViyaApiClient( + 'https://sample.server.com', + '/Public', + 'Context', + function() {} + ) + + beforeAll(() => { + originalFetch = (global as any).fetch + }) + + beforeEach(() => { + ;(global as any).fetch = jest.fn().mockImplementation(() => + Promise.resolve({ + text: () => Promise.resolve(sampleResponse), + json: () => Promise.resolve(sampleResponse), + ok: true, + headers: { + get: function() { return '' } + } + }) + ) + }) + + afterAll(() => { + ;(global as any).fetch = originalFetch + }) + + it('should move folder successfully', async (done) => { + let res: any = await sasViyaApiClient.moveFolder('/Test/test', '/Test/toFolder', 'toFolder', 'token') + + expect(JSON.stringify(res)).toEqual( + JSON.stringify(sampleResponse) + ) + done() + }) +})