Skip to content
This repository was archived by the owner on Jun 28, 2024. It is now read-only.

Commit 1f5ac55

Browse files
committed
Add tests for #5
1 parent 50cdaae commit 1f5ac55

File tree

2 files changed

+88
-3
lines changed

2 files changed

+88
-3
lines changed

src/Sender/FCMTopic.php

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@
77

88
class FCMTopic extends HTTPSender {
99

10+
const CREATE = 'create';
11+
const SUBSCRIBE = 'subscribe';
12+
const UNSUBSCRIBE = 'unsubscribe';
13+
1014
private $add_subscription_url = 'https://iid.googleapis.com/iid/v1:batchAdd';
1115
private $remove_subscription_url = 'https://iid.googleapis.com/iid/v1:batchRemove';
1216

@@ -20,7 +24,7 @@ class FCMTopic extends HTTPSender {
2024
*/
2125
public function createTopic($topicId, $registrationId)
2226
{
23-
$request = new TopicRequest('create', $topicId);
27+
$request = new TopicRequest(self::CREATE, $topicId);
2428
if (is_array($registrationId)) {
2529
return null;
2630
}
@@ -43,7 +47,7 @@ public function createTopic($topicId, $registrationId)
4347
*/
4448
public function subscribeTopic($topicId, $recipientsTokens)
4549
{
46-
$request = new TopicRequest('subscribe', $topicId, $recipientsTokens);
50+
$request = new TopicRequest(self::SUBSCRIBE, $topicId, $recipientsTokens);
4751
$response = $this->client->request('post', $this->add_subscription_url, $request->build());
4852

4953
if ($this->isValidResponse($response)) {
@@ -62,7 +66,7 @@ public function subscribeTopic($topicId, $recipientsTokens)
6266
*/
6367
public function unsubscribeTopic($topicId, $recipientsTokens)
6468
{
65-
$request = new TopicRequest('unsubscribe', $topicId, $recipientsTokens);
69+
$request = new TopicRequest(self::UNSUBSCRIBE, $topicId, $recipientsTokens);
6670
$response = $this->client->request('post', $this->remove_subscription_url, $request->build());
6771

6872
if ($this->isValidResponse($response)) {

tests/TopicsTest.php

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use LaravelFCM\Message\Topics;
66
use LaravelFCM\Sender\FCMSender;
77
use LaravelFCM\Message\Exceptions\NoTopicProvidedException;
8+
use LaravelFCM\Sender\FCMTopic;
89

910
class TopicsTest extends FCMTestCase
1011
{
@@ -128,4 +129,84 @@ public function testItSendsANotificationToATopicAndReturnError()
128129
$this->assertTrue($response->shouldRetry());
129130
$this->assertEquals('TopicsMessageRateExceeded', $response->error());
130131
}
132+
133+
public function testCreateTopic()
134+
{
135+
$response = new Response(200, [], json_encode([]));
136+
137+
$client = Mockery::mock(Client::class);
138+
$client->shouldReceive('request')->once()->andReturn($response);
139+
140+
$logger = new \Monolog\Logger('test');
141+
$logger->pushHandler(new \Monolog\Handler\NullHandler());
142+
143+
$fcm = new FCMTopic($client, 'http://test.test', $logger);
144+
145+
$response = $fcm->createTopic('id_1', 'abcd');
146+
$this->assertTrue($response);
147+
}
148+
149+
public function testSubscribeTopic()
150+
{
151+
$response = new Response(200, [], json_encode([]));
152+
153+
$client = Mockery::mock(Client::class);
154+
$client->shouldReceive('request')->once()->andReturn($response);
155+
156+
$logger = new \Monolog\Logger('test');
157+
$logger->pushHandler(new \Monolog\Handler\NullHandler());
158+
159+
$fcm = new FCMTopic($client, 'http://test.test', $logger);
160+
161+
$response = $fcm->subscribeTopic('id_1', 'token1');
162+
$this->assertTrue($response);
163+
}
164+
165+
public function testSubscribeTopicMultipleTokens()
166+
{
167+
$response = new Response(200, [], json_encode([]));
168+
169+
$client = Mockery::mock(Client::class);
170+
$client->shouldReceive('request')->once()->andReturn($response);
171+
172+
$logger = new \Monolog\Logger('test');
173+
$logger->pushHandler(new \Monolog\Handler\NullHandler());
174+
175+
$fcm = new FCMTopic($client, 'http://test.test', $logger);
176+
177+
$response = $fcm->subscribeTopic('id_1', ['token1', 'token2']);
178+
$this->assertTrue($response);
179+
}
180+
181+
public function testUnSubscribeTopic()
182+
{
183+
$response = new Response(200, [], json_encode([]));
184+
185+
$client = Mockery::mock(Client::class);
186+
$client->shouldReceive('request')->once()->andReturn($response);
187+
188+
$logger = new \Monolog\Logger('test');
189+
$logger->pushHandler(new \Monolog\Handler\NullHandler());
190+
191+
$fcm = new FCMTopic($client, 'http://test.test', $logger);
192+
193+
$response = $fcm->unSubscribeTopic('id_1', 'token1');
194+
$this->assertTrue($response);
195+
}
196+
197+
public function testUnSubscribeTopicMultipleTokens()
198+
{
199+
$response = new Response(200, [], json_encode([]));
200+
201+
$client = Mockery::mock(Client::class);
202+
$client->shouldReceive('request')->once()->andReturn($response);
203+
204+
$logger = new \Monolog\Logger('test');
205+
$logger->pushHandler(new \Monolog\Handler\NullHandler());
206+
207+
$fcm = new FCMTopic($client, 'http://test.test', $logger);
208+
209+
$response = $fcm->unSubscribeTopic('id_1', ['token1', 'token2']);
210+
$this->assertTrue($response);
211+
}
131212
}

0 commit comments

Comments
 (0)