2424use LINE \LINEBot \Event \FollowEvent ;
2525use LINE \LINEBot \Event \JoinEvent ;
2626use LINE \LINEBot \Event \LeaveEvent ;
27+ use LINE \LINEBot \Event \MemberJoinEvent ;
28+ use LINE \LINEBot \Event \MemberLeaveEvent ;
2729use LINE \LINEBot \Event \MessageEvent \AudioMessage ;
2830use LINE \LINEBot \Event \MessageEvent \FileMessage ;
2931use LINE \LINEBot \Event \MessageEvent \ImageMessage ;
@@ -348,6 +350,47 @@ class EventRequestParserTest extends TestCase
348350 "result": "failed",
349351 "nonce": "1234567890abcdefghijklmnopqrstuvwxyz"
350352 }
353+ },
354+ {
355+ "type":"memberJoined",
356+ "timestamp":12345678901234,
357+ "source":{
358+ "type":"group",
359+ "groupId":"groupid"
360+ },
361+ "joined": {
362+ "members": [
363+ {
364+ "type": "user",
365+ "userId": "U4af4980629..."
366+ },
367+ {
368+ "type": "user",
369+ "userId": "U91eeaf62d9..."
370+ }
371+ ]
372+ },
373+ "replyToken":"replytoken"
374+ },
375+ {
376+ "type":"memberLeft",
377+ "timestamp":12345678901234,
378+ "source":{
379+ "type":"group",
380+ "groupId":"groupid"
381+ },
382+ "left": {
383+ "members": [
384+ {
385+ "type": "user",
386+ "userId": "U4af4980629..."
387+ },
388+ {
389+ "type": "user",
390+ "userId": "U91eeaf62d9..."
391+ }
392+ ]
393+ }
351394 }
352395 ]
353396}
@@ -362,9 +405,9 @@ public function testParseEventRequest()
362405 {
363406 $ bot = new LINEBot (new DummyHttpClient ($ this , function () {
364407 }), ['channelSecret ' => 'testsecret ' ]);
365- $ events = $ bot ->parseEventRequest ($ this ::$ json , 'uilGuZPX3SyyreXYIYla+I3kS48xg4+igqQZL33fc6M = ' );
408+ $ events = $ bot ->parseEventRequest ($ this ::$ json , 'iiWsqJCsXZSzoKpuZPBk9Vqw3XiAl+AqLJLUKYEVf2I = ' );
366409
367- $ this ->assertEquals (count ($ events ), 24 );
410+ $ this ->assertEquals (count ($ events ), 26 );
368411
369412 {
370413 // text
@@ -640,5 +683,29 @@ public function testParseEventRequest()
640683 $ this ->assertEquals (true , $ event ->isFailed ());
641684 $ this ->assertEquals ("1234567890abcdefghijklmnopqrstuvwxyz " , $ event ->getNonce ());
642685 }
686+
687+ {
688+ // member join
689+ $ event = $ events [24 ];
690+ $ this ->assertInstanceOf ('LINE\LINEBot\Event\MemberJoinEvent ' , $ event );
691+ /** @var MemberJoinEvent $event */
692+ $ this ->assertEquals ('replytoken ' , $ event ->getReplyToken ());
693+ $ this ->assertEquals (12345678901234 , $ event ->getTimestamp ());
694+ $ members = $ event ->getMembers ();
695+ $ this ->assertEquals (["type " => "user " , "userId " => "U4af4980629... " ], $ members [0 ]);
696+ $ this ->assertEquals (["type " => "user " , "userId " => "U91eeaf62d9... " ], $ members [1 ]);
697+ }
698+
699+ {
700+ // member leave
701+ $ event = $ events [25 ];
702+ $ this ->assertInstanceOf ('LINE\LINEBot\Event\MemberLeaveEvent ' , $ event );
703+ /** @var MemberLeaveEvent $event */
704+ $ this ->assertTrue ($ event ->getReplyToken () === null );
705+ $ this ->assertEquals (12345678901234 , $ event ->getTimestamp ());
706+ $ members = $ event ->getMembers ();
707+ $ this ->assertEquals (["type " => "user " , "userId " => "U4af4980629... " ], $ members [0 ]);
708+ $ this ->assertEquals (["type " => "user " , "userId " => "U91eeaf62d9... " ], $ members [1 ]);
709+ }
643710 }
644711}
0 commit comments