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)); }); //