Skip to content

Commit 50c9a81

Browse files
committed
Adds new message resource
1 parent 0579aa7 commit 50c9a81

File tree

4 files changed

+65
-0
lines changed

4 files changed

+65
-0
lines changed

src/Push.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,15 @@
66
use \Userlist\Push\Company;
77
use \Userlist\Push\Relationship;
88
use \Userlist\Push\Event;
9+
use \Userlist\Push\Message;
910

1011
class Push
1112
{
1213
public $users;
1314
public $companies;
1415
public $events;
1516
public $relationships;
17+
public $messages;
1618

1719
public function __construct($config = null)
1820
{
@@ -23,6 +25,7 @@ public function __construct($config = null)
2325
$this->companies = new Relation(Company::class, $client);
2426
$this->relationships = new Relation(Relationship::class, $client);
2527
$this->events = new Relation(Event::class, $client);
28+
$this->messages = new Relation(Message::class, $client);
2629
}
2730

2831
public function user($payload = [])
@@ -44,4 +47,9 @@ public function event($payload = [])
4447
{
4548
$this->events->push($payload);
4649
}
50+
51+
public function message($payload = [])
52+
{
53+
$this->messages->push($payload);
54+
}
4755
}

src/Push/Message.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
namespace Userlist\Push;
3+
4+
class Message extends Resource
5+
{
6+
public static $url = '/messages';
7+
8+
public function __construct($payload)
9+
{
10+
if ($payload == null) {
11+
throw new \InvalidArgumentException('Missing required payload');
12+
}
13+
14+
parent::__construct($payload);
15+
}
16+
}

tests/Push/MessageTest.php

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
namespace Userlist\Test\Push;
3+
4+
use PHPUnit\Framework\TestCase;
5+
use Userlist\Push\Message;
6+
7+
final class MessageTest extends TestCase
8+
{
9+
private $message;
10+
11+
public function setUp(): void
12+
{
13+
$this->message = new Message([
14+
'user' => 'user-1',
15+
'template' => 'welcome-email'
16+
]);
17+
}
18+
19+
public function testInitializeWithMissingPayload()
20+
{
21+
$this->expectException(\InvalidArgumentException::class);
22+
$this->expectExceptionMessage('Missing required payload');
23+
24+
new Message(null);
25+
}
26+
27+
public function testJsonSerialize()
28+
{
29+
$this->assertEquals(
30+
$this->message->jsonSerialize(),
31+
['user' => 'user-1', 'template' => 'welcome-email']
32+
);
33+
}
34+
}

tests/PushTest.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,11 @@ public function testEventSuccessful()
5353
$this->push->event(['name' => 'some-event', 'user' => 'some-identifier']);
5454
$this->assertEquals('/events', $this->mock->getLastRequest()->getUri()->getPath());
5555
}
56+
57+
public function testMessageSuccessful()
58+
{
59+
$this->mock->append(new Response(202, ['Content-Length' => 0]));
60+
$this->push->message(['user' => 'user-1', 'template' => 'welcome-email']);
61+
$this->assertEquals('/messages', $this->mock->getLastRequest()->getUri()->getPath());
62+
}
5663
}

0 commit comments

Comments
 (0)