2024-08-29 (C) Questetra, Inc. (MIT License) 3 2 This item archives cards on Trello. この工程は、Trello のカードをアーカイブします。 https://support.questetra.com/bpmn-icons/service-task-trello-card-archive/ https://support.questetra.com/ja/bpmn-icons/service-task-trello-card-archive/ iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAzBJREFUWEfF l11IFFEUx/93xnH9iPzow0jBaIOsSNJWI+glX6KHJLcvkiKwF7WXolJ76iWiSLBeUortoSSLcDfp pZfwJXrQVV8MIsNEjFbwI5T1e/bGndnZnRlnZ8ZZau/b3HvuOb97zrnnniFI8SC27Z8KZoGPeMHz x0FpGSh2gSBP2k8xC4IxEDIEUeyFyPnxwbNgR7c1wLm+HRBJM0DqAWTYUQpgCaAd4OlDvKsMme0x B6gJ1oOgFUC2TcN6sTAobiHg6Ui0PzGAN/gUQINDw/pt7fB7Go10GQPU9L8GIRfZhgyBQ3qadaSM lM8tivFpSrsQqKjVy63XHD15aXEmAs1u7C5wOXbCyhqF79MUGp+NKzrWeUILIMe8nUl/uV+Co3ud hl7L7G4cxujksjxJ0aDOiTiAlO3cDyXhlt6UwyU4c73eZQ8CIdzp/KVMh8FH9ii3I27B298GkOuK 1PLbck3s5xdF/AnLMXUJHLbnpMXsrIoUodlV6ZvjCHbmCSAq9taeSdx+OaHioo/hr7jBJmQxVmQE TKvvuRogQgH+7IDmYCFfKQpyBWmutu0nuj7PxNZ914pRV7U19r0eAEtYxRZWrGSA032XwHGv1BbU ACyZXBcGNQBjHQdRvC1dmjt5bwQfh+biBq8U4WZ1gRkAEIlcxvvKThngzIAPlNb9VwBCXqD78FUZ wBtkxyv7rwDAEPyechmgJjgTe1iiFP88BOwBC3jyFQ9QTYABbASAZThLNGX0tLhRXZFrngNs1e+J XhZvMCkApovdFDbYidRXkM0Z3AJZOAaQZAj03tN/GwLoQpBUEjoC0CShxTVcEymE89o6MPG8FIX5 ciGyGoYe0FxDi0LEDIxPrWB6fk2ylZnOoaTQbnOUIAc0hciiFFud0GrduhRLxcj8MbIyYrb+qGcS TaaPEdute46/PjmA/UX23WwGcKTlG/pGwopIgueYLasakhOHNqO7yY1sF5fM4dE7PI+qu9/jOhI2 JIqIrhk9tm8TcrJ4RxCDowv4He0TogosWjLFjKopdWTZaJPtpjSBJ5IE2WBbHvNEKn9MFIiU/pqp /Z6yn9Mkg2+1/S+COKkwjkUALAAAAABJRU5ErkJggg== { const authKey = httpClient.createAuthSettingToken( 'Trello', 'TrelloApiKey', ); configs.putObject('conf_ApiKey', authKey); const authToken = httpClient.createAuthSettingToken( 'Trello', 'TrelloApiToken', ); configs.putObject('conf_ApiToken', authToken); const cardIdsDef = engine.createDataDefinition('カード IDs', 3, 'q_CardIds', 'STRING_TEXTAREA'); configs.putObject('conf_CardIds', cardIdsDef); engine.setData(cardIdsDef, cardIds); }; /** * 設定の準備 C3: カード ID は単一行を指定 * @param cardId */ const prepareSingleLineConfigs = (cardId) => { const authKey = httpClient.createAuthSettingToken( 'Trello', 'TrelloApiKey', ); configs.putObject('conf_ApiKey', authKey); const authToken = httpClient.createAuthSettingToken( 'Trello', 'TrelloApiToken', ); configs.putObject('conf_ApiToken', authToken); const cardIdsDef = engine.createDataDefinition('カード ID', 3, 'q_CardId', 'STRING_TEXTFIELD'); configs.putObject('conf_CardIds', cardIdsDef); engine.setData(cardIdsDef, cardId); }; /** * 異常系のテスト * @param func * @param errorMsg */ const assertError = (func, errorMsg) => { let failed = false; try { func(); } catch (e) { failed = true; expect(e.message).toEqual(errorMsg); } if (!failed) { fail('No error was thrown.'); } }; /** * 改行のみ */ test("Failed - Empty lines only", () => { prepareConfigs('\n\n\n'); assertError(main, "Card IDs aren't set."); }); /** * 空行 単一行を指定 */ test("Failed - Empty line", () => { prepareSingleLineConfigs(''); assertError(main, "Card IDs aren't set."); }); /** * PUT リクエスト のテスト * @param url * @param method * @param cardId */ const assertRequest = ({ url, method }, cardId) => { expect(url).toEqual(`https://api.trello.com/1/cards/${cardId}?key=TrelloApiKey&token=TrelloApiToken&closed=true`); expect(method).toEqual('PUT'); }; /** * PUT リクエストで失敗 存在しないカード ID 、権限のないカード ID など */ test("PUT Failed", () => { prepareConfigs('qqqqqq'); httpClient.setRequestHandler((request) => { assertRequest(request, 'qqqqqq'); return httpClient.createHttpResponse(404, "application/json", "{}"); }); assertError(main, 'Failed to archive. Card ID: qqqqqq, status: 404'); }); /** * 成功 - 1 つのカード ID 単一行を指定 */ test("Success - 1 cardID - singleline", () => { prepareSingleLineConfigs('123ABC'); httpClient.setRequestHandler((request) => { assertRequest(request, "123ABC"); return httpClient.createHttpResponse(200, 'application/json', '{}'); }); main(); }); /** * 成功 - 1 つのカード ID 複数行を指定 */ test("Success - 1 cardID", () => { prepareConfigs('456DEF'); httpClient.setRequestHandler((request) => { assertRequest(request, "456DEF"); return httpClient.createHttpResponse(200, 'application/json', '{}'); }); main(); }); /** * 成功 - 先頭や、途中に空行がある 末尾に2行以上の改行がある */ test("Success - Empty lines are set", () => { prepareConfigs('\n123450\n\n123451\n\n\n\n'); let requestCount = 0; httpClient.setRequestHandler((request) => { assertRequest(request, `12345${requestCount++}`); return httpClient.createHttpResponse(200, 'application/json', '{}'); }); main(); expect(requestCount).toEqual(2); }); /** * 成功 - 複数のカード ID HTTP リクエスト数の上限 */ test('Succeed to multiple IDs', () => { let ids = ''; for (let i = 0; i < httpClient.getRequestingLimit(); i++) { ids += `ID${i}\n`; } prepareConfigs(ids); let requestCount = 0; httpClient.setRequestHandler((request) => { assertRequest(request, `ID${requestCount++}`); return httpClient.createHttpResponse(200, 'application/json', '{}'); }); main(); expect(requestCount).toEqual(httpClient.getRequestingLimit()); }); /** * 複数のカード ID HTTP リクエスト数の上限を超える */ test('Failed - Number of Card IDs is over the limit', () => { let ids = ''; for (let i = 0; i <= httpClient.getRequestingLimit(); i++) { ids += `ID${i}\n`; } prepareConfigs(ids); assertError(main, 'Number of Card IDs is over the limit.'); }); ]]>