2022-11-25
(C) Questetra, Inc. (MIT License)
2
This item searches for a folder with a specific name directly under the specified folder on Box.
この工程は、Box の指定フォルダ直下に特定の名前のフォルダがあるかどうか調べます。
https://support.questetra.com/bpmn-icons/box-folder-search/
https://support.questetra.com/ja/bpmn-icons/box-folder-search/
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAD/UlEQVRYR82XbWibVRTHf/fJ2jXJ
2qSd65x11aC0YgJWZUwEWZ0D/SJaHYKKmgykbL70Bf2k4IYwZOKWOhFRMM9QZxHUjSEo+7AOlA1E
7WSRThzdqq1tWWxjm7Zrk1y5N+SlydM2XdvN50sebs5z7u+e8z/n3iu4xo9Y1Pz+3x6F5BagAYQb
oX4BSTfIUaAbIboIeY8W63dhAH+vGyZaQLYihLsox1LBiCA4OjA9CmzOZ34Af9gP8kDRE+dPo0GM
AObtR+YimBvAfzaIEC1FrXghIymDmL42KzNrgMBZE8RzC/ld1P8SE9MbyP+mEGA5V16Ykg5MX2vu
8GwAlXNBaFErW6yxFE25msgCaLXHeq9YcMWCaGE6PenqyAEI70bwRrF+lmQn2YPp3a18ZAECYVWv
rrTj0I4bqHLaeOTgn0uay/JjFQXTV5kFUB1OyK9zjYeC9ThKBeW7epYfQHfPlBZSEbBQ/nBHCmDN
zpUCkLoiUgCBcBegenzmUQDO1QaHT0dpqC3T4yd7YrzyxZB+33V/Jds3VbBmtUH/SJzmQwN07ryR
7r4p2jtTNh88uwHPdaU8uP+iVRRPEvI2pgEuADflA6wrtxV8+GPvJBcuzfDY3RXYjBzgfxNU2A0M
AW2fD1Jht/FmUzWx6STuFyyiqDYw03tnGkDmz6QioADUZO98F8HtMHh521o9lpQwNSMxvx/l9PkJ
XtpWxSaPnZFYArfDRmQ8oeFcDhvvHv+Hts5Bax2FvGJeAFUFW97q5Yc/JrWDVx9ay74n1uv3Iz+P
0fRetkIiB+uxlxj80jfFvbfatc2Jnhhb91mGPwWUA1CQgoH9dawrX0VN+zmGxxLa/qnNLj5rrtHv
ShtPf9ifWdnfB+p02X7z6zhNd5Xr8U9PRXnmo6zN7DDIM4R8DXOK8NRrHu65xY7K+QNvX2SDaxXH
Wmqpu75U+1FhVsL78qcxDjfX8ORml05BeZmN6YTUDUalQenh/RMjC4jQogwb6x189eJGKp02YpeT
2AxBWYmgLzLDwGhcw8UTaJG57AaT0xIlJGXTcTyi09HcWMml8QTVLecKAWRuGVo0IvXF1tuc7N1e
rUspnpSE+y+z4+N+/hqJ88nzNdxX58BRajAYjbPn6DB7H1/P70PTPNzRpyf8tr2WjVUleF8/bwGQ
24jU33mt2Fq2yzYaJeTVx7v/0WaktmMxoaohsyEt23pnO4oiHTcXbsfK6JoeSNKUK3oky54D0tNd
vUMp8hAhnz8/rVfpWF648vkjkEmHPqiYSxBmFCn8V3YxyUDoq1krAnWcLrZCokjU1Sy4tKtZfsJS
l9NGhGgA6QZxR8pEngExipTdYHTNt+LiNbBCTSDf7X8FbX8wYecpbwAAAABJRU5ErkJggg==
{
configs.put('conf_OAuth2', 'Box');
configs.put('ParentFolderId', folderId);
configs.put('FolderName', folderName);
// 文字型データ項目を準備して、config に指定
const idDef = engine.createDataDefinition('ファイルID', 3, 'q_ids', 'STRING_TEXTAREA');
configs.putObject('FolderIdItem', idDef);
// 文字型データ項目の値(フォルダ ID を保存するデータ項目)を指定
engine.setData(idDef, '事前文字列');
// 文字型データ項目を準備して、config に指定
const urlDef = engine.createDataDefinition('ファイルURL', 4, 'q_urls', 'STRING_TEXTAREA');
configs.putObject('WebViewUrlItem', urlDef);
// 文字型データ項目の値(フォルダ URL を保存するデータ項目)を指定
engine.setData(urlDef, '事前文字列');
return {
idDef,
urlDef
};
};
/**
* リクエストのテスト
* フォルダ内の項目のリストを取得
* @param {Object} request
* @param request.url
* @param request.method
* @param folderId
*/
const assertRequest = ({ url, method }, folderId) => {
expect(method).toEqual('GET');
expect(url).toEqual(`https://api.box.com/2.0/folders/${folderId}/items?fields=id%2Ctype%2Cname&limit=1000&usemarker=true&marker=`);
};
/**
* FolderName が空でエラーになる場合
*/
test('Folder Name is blank', () => {
prepareConfigs(configs, '56789', '');
expect(execute).toThrow('Folder Name is blank');
});
/**
* FolderIdItem WebViewUrlItem が未設定でエラーになる場合
*/
test('Neither of Data Items to save result are set - neither C4 nor C5 are set ', () => {
configs.put('conf_OAuth2', 'Box');
configs.put('ParentFolderId', '98765');
configs.put('FolderName', 'test3');
expect(execute).toThrow('Neither of Data Items to save result are set.');
});
/**
* Box への API リクエストでエラー
* フォルダ内の項目のリストを取得失敗
*/
test('GET Failed', () => {
prepareConfigs(configs, '12345', 'test');
httpClient.setRequestHandler((request) => {
assertRequest(request, '12345');
return httpClient.createHttpResponse(400, 'application/json', '{}');
});
expect(execute).toThrow('Failed to search');
});
/**
* フォルダ検索成功
* フォルダ内の項目のリスト(1 entrie)を取得成功
* 検索するフォルダの親フォルダの ID 指定
*/
test('200 Success - 1 entrie', () => {
const {
idDef,
urlDef
} = prepareConfigs(configs, '54321', 'test2');
httpClient.setRequestHandler((request) => {
assertRequest(request, '54321');
//レスポンスの"entries"は、簡易版レプリゼンテーション
const responseObj = {
"entries": [
{
"id": 11111,
"etag": 1,
"type": "folder",
"sequence_id": 3,
"name": "test2"
}
],
"limit": 1000,
"offset": 2000,
"order": [
{
"by": "type",
"direction": "ASC"
}
],
"total_count": 5000
};
return httpClient.createHttpResponse(200, 'application/json', JSON.stringify(responseObj));
});
//