2024-03-05
(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/
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADLUlEQVRYR2NkYGBgZBhAALJ81AFE
hUBmYabNj19/dglzM7ERirGerpkshNTA5ImOgvTClGu/fjEq5AfeYdeX+YrT0cv2S3y69kjgVGv7
IjdiHEGUAzKK0nKf8X9peyz5ntv5jty/7qTzTPgML51n+O/rbyaH6f3TjxByBFEOSMxO/XZB/wnH
d6k/DGpnRb82WT/nwhcKF59w/5++VfnmzP45WhQ7IL0wdfZzga8Rt4xfc4MM43zGwkBMKICi4vBt
idoZfbMm43ME3hAAJbx/DL9nHXR+qAEzBOQA2eeCBEMBpD5psv6P+VNnc5HtgOrKuF2XOf5YwnyP
7oiN4XfAoYILEJMgcYYAyPdPBT5uR7ccFg2gUAgX+/I3yvEFHyUJEqcDQNnulOZTDVDCQwegaAAB
g4syPwhlS1CCXL1Xdi+ubInVAbBsh833yNEAcgAb2/8HM9IvwdMIttDAlyAxHIAt4WEzFJQdJT9w
rwDJ2am9DMUXFfiyJYYD0LMdNstBUQDyPSyFg8qJebkXOQglyEO3xFfP7J+diqwOxQGk+F7qI08V
LI+DosxW9UUzoQQJypYcbCxuyCUkigPwJTzkuDe7Ln0DvZQD6c30vqtOqIRET5BwBxCT8ECOsN8r
f4OJgTUNvZyHhR6pCRLuAOTyHldcwhIeejzC1IPSDyhBBuvu42MXwV4NoGdLsAOISXj4fA9zACwU
JgavwJktQQ4DZUtYgoQ6AHehAzMc5HvhV9zM/xkl/uFL7SA5xv8vmAg1XD7//nsLlI7ADiAm/i23
K/y48ywQnNXY9S0ZePlx1zGfP37D60aZN33fONheVoJyETwN4MsBIN+/vxADrngIWU4odDjeH/vP
93kpvK0AdwCszXfc8wFKgQKyXOi1MuPdp5ZclFoOchz/3ZZvnKxvPGC5CK0cwGx8gEo8UNBTw3KI
75fNQ85FGEUxLDvCajtqWQ5KF8ofSzEKMAwHwBIkyAGgoH8iUsSFL8ERinOYPCjoYQkPZ12AKFBS
rj0X+Cb77f9UbmpYjp7wCDoAlCC//xbZQazviFGHnPAIOoAYA6mlhqh+AbUsw2bOgDsAAHEO2FDM
6/Q2AAAAAElFTkSuQmCC
{
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 func
* @param errorMsg
*/
const assertError = (func, errorMsg) => {
let failed = false;
try {
main();
} catch (e) {
failed=true;
}
if (!failed) {
fail();
}
};
test('IDs is null', () => {
prepareConfigs(configs, null);
assertError(main, 'File / Folder IDs aren\'t set.');
});
test('IDs is blank', () => {
prepareConfigs(configs, '\n\n\n'); //空行が複数行あるだけ
assertError(main, '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(main, 'Number of File IDs is over the limit.');
});
test('User not found', () => {
configs.put('UserID', '3'); // UserID は空ではないが、対応する QuserView がない状態
prepareIdsConfig(configs, '12345');
assertError(main, '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(main, 'Failed to delete. ID: 0001, status: 400');
});
]]>