2024-11-21 (C) Questetra, Inc. (MIT License) 3 2 This item deletes files or folders on Google Drive. この工程は、Google ドライブ上のファイルやフォルダを削除します。 一度に複数の削除が可能です。 https://support.questetra.com/bpmn-icons/googledrive-folderdelete/ https://support.questetra.com/ja/bpmn-icons/googledrive-folderdelete/ iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAA71JREFUWEfF V11oFFcU/s7M7K6TRs1vK1VUSGmbCK2SB6VFgpLWlYC2omIDLaUlCBGfimwWgw9Fu9mW0ocSoUhE aKmlgUgUyShiEUWSh4AW7L9CS5PGZhuTJmTi7swcmUn3d+ZOdtGy87Ts3HvOd77zfefeIZT5oVLy h2MP3wTMViJqZqABQM1/+6cIuMvMo4B8RYuGzhUbd0kArT1TK2VWj5CEg2DUFRWYkGALX5ikf3Kl q2bGb48vgJ0x/T2WEC86cWEmQoIsRIai6mkRCCGAcHy+F0ydRVW81CLik1qk4pDXMk8A4bj+NRhv LRW3pPeEs1pEbXeTVPDPE63clc3NRB4DTs8JfX6V7d2soKVRgizlk5cyGBdvmbj8velLDDHez9VE JoqtdoXU3/wE19Io452tCtQgUP2Uu3u/TliInE1CT/pgICQM1p9LuyMTZUdMP06Eo37wYweC2LhO wsQ0o245QZHzVxsm8O2IgS+vG74sMOPEpajabS/KAAjH9Um/6vdvUdD+qoKQAiykgFmdUb/CzcLE DCN+PoWfxi0xCEJCi6j1GQDOhCNrQLRjdQ2h+40g1tdnE/4zy6gIkdOO3Mdi4OodE59eTPmbhKU9 9sR0IoZj870gsec7tivY1axAkbIxDQuY/JexaiWBCoiYnmd8fsnAzV98BMl8UotWHHK27uzRhxnY 7AX55XUSjrQFULvcTbdNs92G2kr3u1u/W4h+I1YjASNDXeqWRQZ69EnAe85Hdwew9QXZVeXsAqP3 soENayS0bZJR4EpHJ2eupTA4KmQhoXWpi00N9+j2qhyCF7l4/SUZHdsUVC7Lr9Du87UfTXx8IYW1 dYRje4JYXe1m4d7fjI8GkxibYi9yLa1LlYUAbHEd3xdE0xoXLhQqPdchuZlsnZwfNXDqqqct8wC4 WlBK0FLA5gDMtsBLhJ+9HcSLz7qrH3/AmFtgBJR8ym0uQwG4tGJawNBtE/3D+Szki9DDhrubZbzb EsCyQBaz3wASmX7sAePDgST+SBToINeGokF0Yn8Qm9ZLTlXMwF/TjKdXuEewKHnSAPpHDHx1w0MD uYPIcYLHKH7leRmHdyioqiCHdltU9u9inx/+tNDd73E4FY5iO6DoMPqgLYBtTTLuzzBWVZHL7yIw cw8Zfd8Z0G6754DnYSQ6jm2fd74WQMMzhMpQcdXb7br+s4nYoMd5IDqOnZFcxIWkWPpF64QXkvSG sl7JsiDKeCn9X5go9VqeBlHWD5M0iLJ+mhUquSwfp49ru6X2PwLQFL0wM02BagAAAABJRU5ErkJg gg== { const idDef = engine.createDataDefinition('フォルダ ID', 3, 'q_folderId', 'STRING_TEXTAREA'); configs.putObject('FileIdsItem', idDef); engine.setData(idDef, ids); return idDef; }; /** * 設定の準備 * @param configs * @param ids * @return {Object} */ const prepareConfigs = (configs, ids) => { const quser = engine.createQuser(3, 'サウスポール', 'SouthPole@questetra.com'); configs.putObject('UserID', quser); return prepareIdsConfig(configs, ids); }; /** * 異常系のテスト * @param errorMsg */ const assertError = (errorMsg) => { let failed = false; try { main(); } catch (e) { failed = true; expect(e.toString()).toEqual(errorMsg); } if (!failed) { fail('No error was thrown.'); } }; test('IDs is null', () => { prepareConfigs(configs, null); assertError('File / Folder IDs aren\'t set.'); }); test('IDs is blank', () => { prepareConfigs(configs, '\n\n\n'); //空行が複数行あるだけ assertError('File / Folder IDs aren\'t set.'); }); test('Number of IDs are over the limit', () => { let ids = ''; for (let i = 0; i <= httpClient.getRequestingLimit(); i++) { ids += 'aaaaa\n'; } prepareConfigs(configs, ids); assertError('Number of File IDs is over the limit.'); }); test('User not found', () => { configs.put('UserID', '3'); // UserID は空ではないが、対応する QuserView がない状態 prepareIdsConfig(configs, '12345'); assertError('User not found.'); }); /** * リクエストのテスト * @param method * @param contentType * @param body * @param name * @param parentId */ const assertRequest = ({url, method, contentType, body}, id) => { expect(url).toEqual(`https://www.googleapis.com/drive/v3/files/${id}?supportsAllDrives=true`) expect(method).toEqual('PATCH'); expect(contentType).toEqual('application/json; charset=UTF-8'); const bodyObj = JSON.parse(body); expect(bodyObj.trashed).toEqual(true); }; test('Succeed to delete multiple files folders', () => { let ids = ''; for (let i = 0; i < httpClient.getRequestingLimit(); i++) { ids += `f${i}\n`; } prepareConfigs(configs, ids); let requestCount = 0; httpClient.setRequestHandler((request) => { assertRequest(request, `f${requestCount++}`); return httpClient.createHttpResponse(200, 'application/json', '{}'); }); main(); expect(requestCount).toEqual(httpClient.getRequestingLimit()); }); test('Failed to delete file folder', () => { let ids = ''; for (let i = 0; i < 2; i++) { ids += `000${i}\n`; } prepareConfigs(configs, ids); let requestCount = 0; httpClient.setRequestHandler((request) => { try { assertRequest(request, `000${requestCount}`); if (requestCount === 1) { return httpClient.createHttpResponse(400, 'application/json', '{}'); } else { return httpClient.createHttpResponse(200, 'application/json', '{}'); } } finally { requestCount++; } }); assertError('Failed to delete. ID: 0001, status: 400'); }); ]]>