3 2 2024-01-19 (C) Questetra, Inc. (MIT License) This item gets tags on WordPress.com. When tag names are specified (write one per line), the IDs of the tags will be saved. When no tag name is specified, all tags will be retrieved and their names and IDs will be saved. この工程は、WordPress.com のタグを取得します。タグの名前を指定すると、そのタグの ID が保存されます。複数指定する場合、1行につき1つずつ書くようにしてください。タグの名前を指定しない場合、タグ全件が取得され、名前と ID が保存されます。 https://support.questetra.com/bpmn-icons/service-task-wordpress-tag-get/ https://support.questetra.com/ja/bpmn-icons/service-task-wordpress-tag-get/ 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 { configs.put('conf_Domain', domain); const namesDef = engine.createDataDefinition('名前', 1, 'q_names', 'STRING_TEXTAREA'); engine.setData(namesDef, names); configs.putObject('conf_Names', namesDef); const idsDef = engine.createDataDefinition('ID', 2, 'q_ids', 'STRING_TEXTAREA'); engine.setData(idsDef, '事前文字列'); configs.putObject('conf_Ids', idsDef); return { namesDef, idsDef }; }; /** * 異常系のテスト * @param errorMsg */ const assertError = (errorMsg) => { try { main(); fail(); } catch (e) { expect(e.message).toEqual(errorMsg); } }; /** * 名前に空行が含まれる場合、エラー */ test('Names include an empty line', () => { prepareConfigs('test1.example.com', 'タグ 1\n\nタグ 2'); assertError('Empty lines are not allowed for tag names.'); }); /** * タグ取得の GET リクエストのテスト * @param {Object} request * @param request.url * @param request.method * @param request.headers * @param domain */ const assertRequest = ({ url, method, headers }, domain) => { const expectedUrl = `https://public-api.wordpress.com/rest/${API_VERSION}/sites/${encodeURIComponent(domain)}/tags` + `?fields=${encodeURIComponent('ID,name')}&number=${MAX_NUMBER}`; expect(url).toEqual(expectedUrl); expect(method).toEqual('GET'); }; /** * タグ取得の GET リクエストでエラー */ test('Fail in GET request', () => { prepareConfigs('test1.example.com', 'タグ 1\nタグ 2\n'); httpClient.setRequestHandler((request) => { assertRequest(request, 'test1.example.com'); return httpClient.createHttpResponse(400, 'application/json', '{}'); }); assertError('Failed to get tags. status: 400'); }); /** * タグ取得の API レスポンスを作成 * @param found タグの総数 * @param prefix タグ名の接頭辞 * @param number タグの数 */ const createResponse = (found, prefix, number) => { const tags = new Array(number).fill('').map((_, i) => ({ ID: i + 1, name: `${prefix}${i + 1}` })); return httpClient.createHttpResponse(200, 'application/json', JSON.stringify({ found, tags })); }; /** * タグの総数が多すぎる場合、エラー */ test('Too many tags', () => { prepareConfigs('test1.example.com', 'タグ 1\nタグ 2\n'); httpClient.setRequestHandler((request) => { assertRequest(request, 'test1.example.com'); return createResponse(MAX_NUMBER + 1, 'タグ ', 1); }); assertError('Too many tags.'); }); /** * 成功 - タグ名を指定 */ test('Succeed - specified tags', () => { const names = 'タグ 3\nタグ 5\n'; // 末尾の改行は無視される const { namesDef, idsDef } = prepareConfigs('test1.example.com', names); httpClient.setRequestHandler((request) => { assertRequest(request, 'test1.example.com'); return createResponse(10, 'タグ ', 10); }); expect(main()).toEqual(undefined); expect(engine.findData(namesDef)).toEqual(names); // 変更なし expect(engine.findData(idsDef)).toEqual('3\n5'); }); /** * 成功 - 全件取得 */ test('Succeed - all tags', () => { const { namesDef, idsDef } = prepareConfigs('test1.example.com', null); httpClient.setRequestHandler((request) => { assertRequest(request, 'test1.example.com'); return createResponse(7, 'tag_', 7); }); expect(main()).toEqual(undefined); const expectedNames = new Array(7).fill('').map((_, i) => `tag_${i + 1}`).join('\n'); const expectedIds = new Array(7).fill('').map((_, i) => `${i + 1}`).join('\n'); expect(engine.findData(namesDef)).toEqual(expectedNames); expect(engine.findData(idsDef)).toEqual(expectedIds); }); ]]>