File tree Expand file tree Collapse file tree 4 files changed +65
-0
lines changed
Expand file tree Collapse file tree 4 files changed +65
-0
lines changed Original file line number Diff line number Diff line change 66use \Userlist \Push \Company ;
77use \Userlist \Push \Relationship ;
88use \Userlist \Push \Event ;
9+ use \Userlist \Push \Message ;
910
1011class 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}
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff 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}
You can’t perform that action at this time.
0 commit comments