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');
});
]]>