Skip to content

Commit 3541bd4

Browse files
authored
Merge pull request #177 from sykmhmh/master
Changed LocationMessage for message without title or address key
2 parents f8ab3a8 + 40dcadd commit 3541bd4

File tree

2 files changed

+78
-20
lines changed

2 files changed

+78
-20
lines changed

src/LINEBot/Event/MessageEvent/LocationMessage.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,21 +40,21 @@ public function __construct($event)
4040
/**
4141
* Returns title of the location message.
4242
*
43-
* @return string
43+
* @return string|null
4444
*/
4545
public function getTitle()
4646
{
47-
return $this->message['title'];
47+
return array_key_exists('title', $this->message) ? $this->message['title'] : null;
4848
}
4949

5050
/**
5151
* Returns address of the location message.
5252
*
53-
* @return string
53+
* @return string|null
5454
*/
5555
public function getAddress()
5656
{
57-
return $this->message['address'];
57+
return array_key_exists('address', $this->message) ? $this->message['address'] : null;
5858
}
5959

6060
/**

tests/LINEBot/EventRequestParserTest.php

Lines changed: 74 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,38 @@ class EventRequestParserTest extends TestCase
127127
"longitude":134.23
128128
}
129129
},
130+
{
131+
"type":"message",
132+
"timestamp":12345678901234,
133+
"source":{
134+
"type":"user",
135+
"userId":"userid"
136+
},
137+
"replyToken":"replytoken",
138+
"message":{
139+
"id":"contentid",
140+
"type":"location",
141+
"address":"tokyo",
142+
"latitude":-34.12,
143+
"longitude":134.23
144+
}
145+
},
146+
{
147+
"type":"message",
148+
"timestamp":12345678901234,
149+
"source":{
150+
"type":"user",
151+
"userId":"userid"
152+
},
153+
"replyToken":"replytoken",
154+
"message":{
155+
"id":"contentid",
156+
"type":"location",
157+
"title":"label",
158+
"latitude":-34.12,
159+
"longitude":134.23
160+
}
161+
},
130162
{
131163
"type":"message",
132164
"timestamp":12345678901234,
@@ -298,9 +330,9 @@ public function testParseEventRequest()
298330
{
299331
$bot = new LINEBot(new DummyHttpClient($this, function () {
300332
}), ['channelSecret' => 'testsecret']);
301-
$events = $bot->parseEventRequest($this::$json, 'a4mKmptGCa6Kx/5PU6Ug3zC2SyLzzf9whz9/FbaR4HQ=');
333+
$events = $bot->parseEventRequest($this::$json, 'GQivZqf1zAwZFxrU7Nxc25D1aE8X0P5QGsA/bOhztdM=');
302334

303-
$this->assertEquals(count($events), 20);
335+
$this->assertEquals(count($events), 22);
304336

305337
{
306338
// text
@@ -384,8 +416,34 @@ public function testParseEventRequest()
384416
}
385417

386418
{
387-
// sticker
419+
// location when not set title attribute
388420
$event = $events[6];
421+
$this->assertInstanceOf('LINE\LINEBot\Event\MessageEvent\LocationMessage', $event);
422+
/** @var LocationMessage $event */
423+
$this->assertEquals('replytoken', $event->getReplyToken());
424+
$this->assertEquals('location', $event->getMessageType());
425+
$this->assertNull($event->getTitle());
426+
$this->assertEquals('tokyo', $event->getAddress());
427+
$this->assertEquals('-34.12', $event->getLatitude());
428+
$this->assertEquals('134.23', $event->getLongitude());
429+
}
430+
431+
{
432+
// location when not set address attribute
433+
$event = $events[7];
434+
$this->assertInstanceOf('LINE\LINEBot\Event\MessageEvent\LocationMessage', $event);
435+
/** @var LocationMessage $event */
436+
$this->assertEquals('replytoken', $event->getReplyToken());
437+
$this->assertEquals('location', $event->getMessageType());
438+
$this->assertEquals('label', $event->getTitle());
439+
$this->assertNull($event->getAddress());
440+
$this->assertEquals('-34.12', $event->getLatitude());
441+
$this->assertEquals('134.23', $event->getLongitude());
442+
}
443+
444+
{
445+
// sticker
446+
$event = $events[8];
389447
$this->assertInstanceOf('LINE\LINEBot\Event\MessageEvent\StickerMessage', $event);
390448
/** @var StickerMessage $event */
391449
$this->assertEquals('replytoken', $event->getReplyToken());
@@ -396,39 +454,39 @@ public function testParseEventRequest()
396454

397455
{
398456
// follow
399-
$event = $events[7];
457+
$event = $events[9];
400458
$this->assertInstanceOf('LINE\LINEBot\Event\FollowEvent', $event);
401459
/** @var FollowEvent $event */
402460
$this->assertEquals('replytoken', $event->getReplyToken());
403461
}
404462

405463
{
406464
// unfollow
407-
$event = $events[8];
465+
$event = $events[10];
408466
$this->assertInstanceOf('LINE\LINEBot\Event\UnfollowEvent', $event);
409467
/** @var UnfollowEvent $event */
410468
$this->assertTrue($event->getReplyToken() === null);
411469
}
412470

413471
{
414472
// join
415-
$event = $events[9];
473+
$event = $events[11];
416474
$this->assertInstanceOf('LINE\LINEBot\Event\JoinEvent', $event);
417475
/** @var JoinEvent $event */
418476
$this->assertEquals('replytoken', $event->getReplyToken());
419477
}
420478

421479
{
422480
// leave
423-
$event = $events[10];
481+
$event = $events[12];
424482
$this->assertInstanceOf('LINE\LINEBot\Event\LeaveEvent', $event);
425483
/** @var LeaveEvent $event */
426484
$this->assertTrue($event->getReplyToken() === null);
427485
}
428486

429487
{
430488
// postback
431-
$event = $events[11];
489+
$event = $events[13];
432490
$this->assertInstanceOf('LINE\LINEBot\Event\PostbackEvent', $event);
433491
/** @var PostbackEvent $event */
434492
$this->assertEquals('replytoken', $event->getReplyToken());
@@ -438,7 +496,7 @@ public function testParseEventRequest()
438496

439497
{
440498
// beacon
441-
$event = $events[12];
499+
$event = $events[14];
442500
$this->assertInstanceOf('LINE\LINEBot\Event\BeaconDetectionEvent', $event);
443501
/** @var BeaconDetectionEvent $event */
444502
$this->assertEquals('replytoken', $event->getReplyToken());
@@ -449,7 +507,7 @@ public function testParseEventRequest()
449507

450508
{
451509
// unknown event (event source: user)
452-
$event = $events[13];
510+
$event = $events[15];
453511
$this->assertInstanceOf('LINE\LINEBot\Event\UnknownEvent', $event);
454512
/** @var UnknownEvent $event */
455513
$this->assertEquals('__unknown__', $event->getType());
@@ -463,7 +521,7 @@ public function testParseEventRequest()
463521

464522
{
465523
// unknown event (event source: unknown)
466-
$event = $events[14];
524+
$event = $events[16];
467525
$this->assertInstanceOf('LINE\LINEBot\Event\UnknownEvent', $event);
468526
/** @var UnknownEvent $event */
469527
$this->assertEquals('__unknown__', $event->getType());
@@ -476,7 +534,7 @@ public function testParseEventRequest()
476534

477535
{
478536
// message event & unknown message event
479-
$event = $events[15];
537+
$event = $events[17];
480538
$this->assertInstanceOf('LINE\LINEBot\Event\MessageEvent', $event);
481539
$this->assertInstanceOf('LINE\LINEBot\Event\MessageEvent\UnknownMessage', $event);
482540
/** @var UnknownMessage $event */
@@ -485,7 +543,7 @@ public function testParseEventRequest()
485543

486544
{
487545
// file message
488-
$event = $events[16];
546+
$event = $events[18];
489547
$this->assertInstanceOf('LINE\LINEBot\Event\MessageEvent', $event);
490548
$this->assertInstanceOf('LINE\LINEBot\Event\MessageEvent\FileMessage', $event);
491549
/** @var FileMessage $event */
@@ -497,7 +555,7 @@ public function testParseEventRequest()
497555

498556
{
499557
// postback date
500-
$event = $events[17];
558+
$event = $events[19];
501559
$this->assertInstanceOf('LINE\LINEBot\Event\PostbackEvent', $event);
502560
/** @var PostbackEvent $event */
503561
$this->assertEquals('replytoken', $event->getReplyToken());
@@ -507,7 +565,7 @@ public function testParseEventRequest()
507565

508566
{
509567
// postback time
510-
$event = $events[18];
568+
$event = $events[20];
511569
$this->assertInstanceOf('LINE\LINEBot\Event\PostbackEvent', $event);
512570
/** @var PostbackEvent $event */
513571
$this->assertEquals('replytoken', $event->getReplyToken());
@@ -517,7 +575,7 @@ public function testParseEventRequest()
517575

518576
{
519577
// postback datetime
520-
$event = $events[19];
578+
$event = $events[21];
521579
$this->assertInstanceOf('LINE\LINEBot\Event\PostbackEvent', $event);
522580
/** @var PostbackEvent $event */
523581
$this->assertEquals('replytoken', $event->getReplyToken());

0 commit comments

Comments
 (0)