START_EVENT
2022-08-18
(C) Questetra, Inc. (MIT License)
2
This item starts a process when Event's start time has passed on Google
Calendar.
このアイテムは、Google カレンダーに登録されている、予定の開始時刻を経過すると、プロセスを開始します。
https://support.questetra.com/bpmn-icons/start-event-google-calendar-event-started/
https://support.questetra.com/ja/bpmn-icons/start-event-google-calendar-event-started/
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAEt0lEQVRYR8VXX2xTVRj/ndv2tmv3
p1cGDyqM8SBRx9jcNBEMW7apSMKYMWoiD9sSEhITQ33AB23DyOaDJmoxGqPRbBgwEhMdUSRKS4ri
XMA/I4jJhkZQIEhgbdm69ra395hz72572t5u3UbwvDS99/vO+Z3v+/2+77sE//MiCzm/vT/cRYjQ
AtAGAG4A7JetMQARgIwBJBTwVh4udd95AbT2hd1Wm7CLqtRDiHbovItSRIhA/EpK3RfqkyJzOcwJ
oO3VcA9RyVulHpx/EAMC0N6gTxouBqIogPb+sJ8Qsmve65ZkQPwBb9WLZqamANoHwkMEpLukvUs0
oiBDQW9Vb755AQD+5utrrGirs8FmmZcqpjAmp1UcPJlAPKm/ppTuC/okD2+cszPLuUDJoGHwTm85
1t5p0f5ejaoYnVCwuUGEw2Z+7ZkkcPy3JDautUFyEagUGD6dxHvH4hkHSumTPCcyABjbLRbyF0+4
D3dWoKZa0Jwvh1WEzqXQ9aAdLrs5gJgMfP2rjLY6EcvK9a2PjiXx5hEeACLpNK011JEB0NEf7gMh
e4ytm9dY0V4ngpaYYzMzgQBTCYpDIwlcn+J2onRvwCf1MZ8sgIEwKyRVxkb+7nLcf7ce/qWstAp8
fkrGB8EElwZEgj63lAGgVzjyBX/Q69tdaFxtXcrZmm8qDRwakbH/uyyAWUJqXNAiYKb53VudeKy+
CNsWAIsp4N1v4/jmzKwUZn0NRWgAOvrDIRDSwu/b0+LAMw/bYeOy8PcNFYOhBG5MqRo/Hq0X4RQB
Rr7xKwrGLirY1mTHsoqsuCIxijeOzGD0vJILm9ITAZ/UqkdgIHyBgNTwFtuaRexoK8tIjpHp4EkZ
Tz1kR3UlwU9/KojJVJPc8GkZVU4BlybT6Gyyo5oDwNTzyqcxXJ5U8+M2FvC6G/UIDEQKyL7pXhs8
T5Shoky/DdM0y6do1Zl7aVLFqT9S6Gy2g7Gdke3Ln5NgfjyA81fTeP6jadOkBbxuUhRA3UoLXu5y
YXllbhWUFeBaVMWxs0m03idizQq9TjBwZgBGJhTs+Sw2NwCzFNx1h4DnNjrgduUCiMsUCYXi93/S
WFUtYGW1ThIWgdGJFNatsqLSmfUZv5LGx3kKmFXBmaBPaihKwgdqrXip05mpaPlX+DdK8dUvMrY/
4tB4UiwCjJi7D5hEIIeEJq23Y50NL2x2aixni/WCHycUbG0SYRWAUgFcvK5ix/tTBSnIkaFZIere
5MCzG7IyZCRkveDaTRW1KywYGdf7Qu08HGAl+LXDM5pE+WU0paKl2LOlDFsaxWytZu0UwHSC4mac
YnmFoCnCWAwgAye5BNi556xGvH10BsfPpbjzaTTglbTxrmgz2vu0CxvuuTWl+JMfEjjwvZwFYNaM
tOHTigtGQ+JngQVU3gLTwpmARhUFqwvaMfPkB5KdHQ48Xi/CsshpyEAyHacYPBFH4KyegqIDieFw
a4fRvIBwoTfe3MahlO4PeqWe/BzdnrHc5OZzRoBLRxchGOInpYURkkYpRc+iPkyMgzR1WOABgad0
IDQKCr+Shn9Jn2b5t2UVEwAbIhoo4CaErDcaCwFYT2cfqaG5blwyBxYW6sVb/wdgbxw/u9E3bAAA
AABJRU5ErkJggg==
{
const quser = engine.createQuser(3, 'サウスポール', 'SouthPole@questetra.com');
configs.putObject('conf_User', quser);
configs.put('conf_CalendarId', calenderId);
};
const DATETIME_FORMAT = 'yyyy-MM-dd\'T\'HH:mm:ssX';
/**
* GET リクエストのテスト
* @param {Object} request
* @param request.url
* @param request.method
* @param calendarId
*/
const assertGetRequest = ({url, method}, calendarId, limit, timestampLowerLimit) => {
const expectedUrl = `https://www.googleapis.com/calendar/v3/calendars/${calendarId}/events`
+ `?maxResults=${limit}`
+ `&orderBy=startTime`
+ `&singleEvents=true`
+ `&timeMin=${encodeURIComponent(dateFormatter.format(DATETIME_FORMAT, timestampLowerLimit))}`
+ `&timeMax=`; // 現在時刻のテストは難しいので省略
expect(url).startsWith(expectedUrl);
expect(url).endsWith(`&timeZone=${encodeURIComponent(engine.getTimeZoneId())}`);
expect(method).toEqual('GET');
};
/**
* 返り値の event のテスト
* @param event
* @param eventId
* @param timestamp
* @param endTimestamp
* @param summary
* @param description
* @param htmlLink
*/
const assertEvent = (event, eventId, timestamp, endTimestamp, summary, description, htmlLink) => {
expect(event.eventId).toEqual(eventId);
expect(event.timestamp).toEqual(timestamp);
expect(event.id).toEqual(`${eventId}_${timestamp.getTime()}`);
expect(event.endTimestamp).toEqual(endTimestamp);
expect(event.summary).toEqual(summary);
expect(event.description).toEqual(description);
expect(event.htmlLink).toEqual(htmlLink);
};
/**
* 正常系のテストケース
*/
test('Success', () => {
const SAMPLE_RESPONSE = {
"kind": "calendar#events",
"etag": "\"p32gdrq7bj2tvi0g\"",
"summary": "TEST",
"updated": "2022-08-10T02:10:27.812Z",
"timeZone": "Asia/Tokyo",
"items": [
{
"kind": "calendar#event",
"etag": "\"2439652485198000\"",
"id": "mq441nohvo8nvrukgf3jt6qols",
"status": "confirmed",
"htmlLink": "https://www.google.com/calendar/event?eid=bXE0NDFub2h2bzhudnJ1a2dmM2p0NnFvbHMgaGF0YW5ha2FAcXVlc3RldHJhLmNvbQ",
"created": "2008-08-27T05:52:58.000Z",
"updated": "2008-08-27T08:37:22.599Z",
"summary": "イベント1",
"description": "説明1",
"start": {
"dateTime": "2008-09-01T13:30:00+09:00",
"timeZone": "Asia/Tokyo"
},
"end": {
"dateTime": "2008-09-01T14:30:00+09:00",
"timeZone": "Asia/Tokyo"
}
},
{
"kind": "calendar#event",
"etag": "\"2439780885850000\"",
"id": "jga9498bk1bqi33jig3bkvjssk",
"status": "confirmed",
"htmlLink": "https://www.google.com/calendar/event?eid=amdhOTQ5OGJrMWJxaTMzamlnM2Jrdmpzc2sgaGF0YW5ha2FAcXVlc3RldHJhLmNvbQ",
"created": "2008-08-26T07:45:26.000Z",
"updated": "2008-08-28T02:27:22.925Z",
"summary": "イベント2",
"description": "説明2",
"start": {
"dateTime": "2008-08-28T14:00:00+09:00",
"timeZone": "Asia/Tokyo"
},
"end": {
"dateTime": "2008-08-28T15:00:00+09:00",
"timeZone": "Asia/Tokyo"
}
},
{
"kind": "calendar#event",
"etag": "\"2440848753292000\"",
"id": "7vfgnrou66tvl4qi4c5m6354qo",
"status": "confirmed",
"htmlLink": "https://www.google.com/calendar/event?eid=N3ZmZ25yb3U2NnR2bDRxaTRjNW02MzU0cW8gaGF0YW5ha2FAcXVlc3RldHJhLmNvbQ",
"created": "2008-09-01T03:51:02.000Z",
"updated": "2008-09-03T06:46:16.646Z",
"summary": "イベント3",
"description": "説明3",
"start": {
"dateTime": "2008-09-08T14:00:00+09:00",
"timeZone": "Asia/Tokyo"
},
"end": {
"dateTime": "2008-09-08T15:00:00+09:00",
"timeZone": "Asia/Tokyo"
}
}
]
};
const calendarId = '23456789';
prepareConfigs(configs, calendarId);
//