@@ -316,4 +316,101 @@ public function testGetFriendDemographics()
316316 $ data = $ res ->getJSONDecodedBody ();
317317 $ this ->assertEquals ($ responseJson , $ data );
318318 }
319+
320+ public function testGetUserInteractionStatistics ()
321+ {
322+ $ requestId = 'test request id ' ;
323+
324+ // Test: status is ready
325+ $ mock = function ($ testRunner , $ httpMethod , $ url , $ data ) use ($ requestId ) {
326+ /** @var \PHPUnit\Framework\TestCase $testRunner */
327+ $ testRunner ->assertEquals ('GET ' , $ httpMethod );
328+ $ testRunner ->assertEquals ('https://api.line.me/v2/bot/insight/message/event ' , $ url );
329+ $ testRunner ->assertEquals ([
330+ 'requestId ' => $ requestId
331+ ], $ data );
332+
333+ return [
334+ 'overview ' => [
335+ 'requestId ' => $ requestId ,
336+ 'timestamp ' => 1568214000 ,
337+ 'delivered ' => 32 ,
338+ 'uniqueImpression ' => 4 ,
339+ 'uniqueClick ' => null ,
340+ 'uniqueMediaPlayed ' => 2 ,
341+ 'uniqueMediaPlayed100Percent ' => -1
342+ ],
343+ 'messages ' => [
344+ [
345+ 'seq ' => 1 ,
346+ 'impression ' => 18 ,
347+ 'mediaPlayed ' => 11 ,
348+ 'mediaPlayed25Percent ' => -1 ,
349+ 'mediaPlayed50Percent ' => -1 ,
350+ 'mediaPlayed75Percent ' => -1 ,
351+ 'mediaPlayed100Percent ' => -1 ,
352+ 'uniqueMediaPlayed ' => 2 ,
353+ 'uniqueMediaPlayed25Percent ' => -1 ,
354+ 'uniqueMediaPlayed50Percent ' => -1 ,
355+ 'uniqueMediaPlayed75Percent ' => -1 ,
356+ 'uniqueMediaPlayed100Percent ' => -1
357+ ],
358+ ],
359+ 'clicks ' => [
360+ [
361+ 'seq ' => 1 ,
362+ 'url ' => 'https://www.yahoo.co.jp/ ' ,
363+ 'click ' => -1 ,
364+ 'uniqueClick ' => -1 ,
365+ 'uniqueClickOfRequest ' => -1
366+ ],
367+ [
368+ 'seq ' => 1 ,
369+ 'url ' => 'https://www.google.com/?hl=ja ' ,
370+ 'click ' => -1 ,
371+ 'uniqueClick ' => -1 ,
372+ 'uniqueClickOfRequest ' => -1
373+ ],
374+ ]
375+ ];
376+ };
377+ $ bot = new LINEBot (new DummyHttpClient ($ this , $ mock ), ['channelSecret ' => 'CHANNEL-SECRET ' ]);
378+ $ res = $ bot ->getUserInteractionStatistics ($ requestId );
379+
380+ $ this ->assertEquals (200 , $ res ->getHTTPStatus ());
381+ $ this ->assertTrue ($ res ->isSucceeded ());
382+
383+ $ data = $ res ->getJSONDecodedBody ();
384+ $ this ->assertEquals ($ requestId , $ data ['overview ' ]['requestId ' ]);
385+ $ this ->assertEquals (1568214000 , $ data ['overview ' ]['timestamp ' ]);
386+ $ this ->assertEquals (32 , $ data ['overview ' ]['delivered ' ]);
387+ $ this ->assertEquals (4 , $ data ['overview ' ]['uniqueImpression ' ]);
388+ $ this ->assertEquals (null , $ data ['overview ' ]['uniqueClick ' ]);
389+ $ this ->assertEquals (2 , $ data ['overview ' ]['uniqueMediaPlayed ' ]);
390+ $ this ->assertEquals (-1 , $ data ['overview ' ]['uniqueMediaPlayed100Percent ' ]);
391+ $ this ->assertEquals (1 , count ($ data ['messages ' ]));
392+ $ this ->assertEquals (1 , $ data ['messages ' ][0 ]['seq ' ]);
393+ $ this ->assertEquals (18 , $ data ['messages ' ][0 ]['impression ' ]);
394+ $ this ->assertEquals (11 , $ data ['messages ' ][0 ]['mediaPlayed ' ]);
395+ $ this ->assertEquals (-1 , $ data ['messages ' ][0 ]['mediaPlayed25Percent ' ]);
396+ $ this ->assertEquals (-1 , $ data ['messages ' ][0 ]['mediaPlayed50Percent ' ]);
397+ $ this ->assertEquals (-1 , $ data ['messages ' ][0 ]['mediaPlayed75Percent ' ]);
398+ $ this ->assertEquals (-1 , $ data ['messages ' ][0 ]['mediaPlayed100Percent ' ]);
399+ $ this ->assertEquals (2 , $ data ['messages ' ][0 ]['uniqueMediaPlayed ' ]);
400+ $ this ->assertEquals (-1 , $ data ['messages ' ][0 ]['uniqueMediaPlayed25Percent ' ]);
401+ $ this ->assertEquals (-1 , $ data ['messages ' ][0 ]['uniqueMediaPlayed50Percent ' ]);
402+ $ this ->assertEquals (-1 , $ data ['messages ' ][0 ]['uniqueMediaPlayed75Percent ' ]);
403+ $ this ->assertEquals (-1 , $ data ['messages ' ][0 ]['uniqueMediaPlayed100Percent ' ]);
404+ $ this ->assertEquals (2 , count ($ data ['clicks ' ]));
405+ $ this ->assertEquals (1 , $ data ['clicks ' ][0 ]['seq ' ]);
406+ $ this ->assertEquals ('https://www.yahoo.co.jp/ ' , $ data ['clicks ' ][0 ]['url ' ]);
407+ $ this ->assertEquals (-1 , $ data ['clicks ' ][0 ]['click ' ]);
408+ $ this ->assertEquals (-1 , $ data ['clicks ' ][0 ]['uniqueClick ' ]);
409+ $ this ->assertEquals (-1 , $ data ['clicks ' ][0 ]['uniqueClickOfRequest ' ]);
410+ $ this ->assertEquals (1 , $ data ['clicks ' ][1 ]['seq ' ]);
411+ $ this ->assertEquals ('https://www.google.com/?hl=ja ' , $ data ['clicks ' ][1 ]['url ' ]);
412+ $ this ->assertEquals (-1 , $ data ['clicks ' ][1 ]['click ' ]);
413+ $ this ->assertEquals (-1 , $ data ['clicks ' ][1 ]['uniqueClick ' ]);
414+ $ this ->assertEquals (-1 , $ data ['clicks ' ][1 ]['uniqueClickOfRequest ' ]);
415+ }
319416}
0 commit comments