2023-09-28
(C) Questetra, Inc. (MIT License)
3
2
This item gets a list ID on Trello.
この工程は、Trello のリスト ID を取得します。
https://support.questetra.com/bpmn-icons/service-task-trello-listid-get/
https://support.questetra.com/ja/bpmn-icons/service-task-trello-listid-get/
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);
configs.put('conf_BoardId', boardId);
configs.put('conf_ListName', listName);
// 文字型データ項目を準備して、config に指定
const listIdDef = engine.createDataDefinition('リスト ID を保存するデータ項目', 3, 'q_ListId', 'STRING_TEXTFIELD');
configs.putObject('conf_ListId', listIdDef);
engine.setData(listIdDef, '事前文字列');
return listIdDef;
};
/**
* 異常系のテスト
* @param func
* @param errorMsg
*/
const assertError = (func, errorMsg) => {
try {
func();
fail();
} catch (e) {
expect(e.toString()).toEqual(errorMsg);
}
};
/**
* GET リクエスト のテスト
* @param url
* @param method
* @param boardId
*/
const assertRequest = ({ url, method }, boardId) => {
expect(url).toEqual(`https://api.trello.com/1/boards/${encodeURIComponent(boardId)}/lists?key=TrelloApiKey&token=TrelloApiToken`); // 認証設定のトークンのテスト時の値は token
expect(method).toEqual('GET');
};
/**
* GET リクエストで失敗 存在しないボード ID 、権限のないボード ID など
*/
test("GET Failed", () => {
prepareConfigs('234BCD', 'test');
httpClient.setRequestHandler((request) => {
assertRequest(request, "234BCD");
return httpClient.createHttpResponse(404, "application/json", "{}");
});
assertError(main, 'Failed to get list information. status: 404');
});
/**
* GET リクエストのレスポンス(ボード内のリスト情報を取得)を準備
*/
const responseObj = [
{
"id":"1234567890abcde",
"name":"作業中",
"closed": true,
"pos": 2154,
"softLimit": "",
"idBoard": "",
"subscribed": true
},
{
"id": "12345",
"name": "完了",
"closed": true,
"pos": 2154,
"softLimit": "",
"idBoard": "",
"subscribed": true
},
{
"id": "6789012345fghij",
"name": "ToDo",
"closed": true,
"pos": 2154,
"softLimit": "",
"idBoard": "",
"subscribed": true
}
];
/**
* 成功 - ボード内の 1 つ目のリストにリスト名がある場合
*/
test("Success - first list", () => {
const listIdDef = prepareConfigs('123ABC', '作業中');
httpClient.setRequestHandler((request) => {
assertRequest(request, "123ABC");
return httpClient.createHttpResponse(200, 'application/json', JSON.stringify(responseObj));
});
main();
expect(engine.findData(listIdDef)).toEqual('1234567890abcde');
});
/**
* 成功 - ボード内の 3 つ目のリストにリスト名がある場合
*/
test("Success - third list", () => {
const listIdDef = prepareConfigs('123ABC', 'ToDo');
httpClient.setRequestHandler((request) => {
assertRequest(request, "123ABC");
return httpClient.createHttpResponse(200, 'application/json', JSON.stringify(responseObj));
});
main();
expect(engine.findData(listIdDef)).toEqual('6789012345fghij');
});
/**
* 失敗 リスト名が存在しない
*/
test("Failed", () => {
const listIdDef = prepareConfigs('123ABC', 'test');
httpClient.setRequestHandler((request) => {
assertRequest(request, "123ABC");
return httpClient.createHttpResponse(200, 'application/json', JSON.stringify(responseObj));
});
assertError(main, 'List name: "test" not found in the Board');
});
]]>