Skip to content

Commit 85835f1

Browse files
committed
AndroidConfig Implemented
* Implemented common configuration (compared to APNs, which is collapse_key, prioirty, ttl) * CommonConfig provides interface between AndroidConfig and APNsConfig on common configurations
1 parent e64b972 commit 85835f1

File tree

3 files changed

+158
-0
lines changed

3 files changed

+158
-0
lines changed

src/Config/AndroidConfig.php

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
<?php
2+
/**
3+
* Created by PhpStorm.
4+
* User: lkaybob
5+
* Date: 31/03/2018
6+
* Time: 00:04
7+
*/
8+
9+
namespace phpFCMv1\Config;
10+
11+
class AndroidConfig implements CommonConfig {
12+
const PRIORITY_HIGH = 'HIGH', PRIORITY_NORMAL = 'NORMAL';
13+
private $payload;
14+
15+
public function __construct() {
16+
$this -> payload = array();
17+
}
18+
19+
/**
20+
* @param $key
21+
* @return mixed
22+
*/
23+
function setCollapseKey($key) {
24+
$payload = array_merge($this -> payload, array('collapse_key' => $key));
25+
$this -> payload = $payload;
26+
27+
return null;
28+
}
29+
30+
/**
31+
* @param $priority
32+
* @return mixed
33+
*/
34+
function setPriority($priority) {
35+
$payload = array_merge($this -> payload, array('priority' => $priority));
36+
$this -> payload = $payload;
37+
38+
return null;
39+
}
40+
41+
/**
42+
* @param $seconds
43+
* @return mixed
44+
*/
45+
function setTimeToLive($seconds) {
46+
$payload = array_merge($this -> payload, array('ttl' => $seconds . 's'));
47+
$this -> payload = $payload;
48+
49+
return null;
50+
}
51+
52+
/**
53+
* @return mixed
54+
*/
55+
public function getPayload() {
56+
if (!sizeof($this -> payload)) {
57+
return null;
58+
} else {
59+
$payload = array('android' => $this -> payload);
60+
return $payload;
61+
}
62+
}
63+
}

src/Config/CommonConfig.php

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?php
2+
/**
3+
* Created by PhpStorm.
4+
* User: lkaybob
5+
* Date: 31/03/2018
6+
* Time: 00:04
7+
*/
8+
9+
namespace phpFCMv1\Config;
10+
11+
12+
interface CommonConfig {
13+
/**
14+
*
15+
* @param $key
16+
* @return mixed
17+
*/
18+
function setCollapseKey($key);
19+
20+
/**
21+
* @param $priority
22+
* @return mixed
23+
*/
24+
function setPriority($priority);
25+
26+
/**
27+
* @param $seconds
28+
* @return mixed
29+
*/
30+
function setTimeToLive($seconds);
31+
32+
/**
33+
* @return mixed
34+
*/
35+
function getPayload();
36+
}

tests/AndroidConfigTest.php

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
<?php
2+
/**
3+
* Created by PhpStorm.
4+
* User: lkaybob
5+
* Date: 05/04/2018
6+
* Time: 20:29
7+
*/
8+
9+
namespace phpFCMv1\tests;
10+
11+
use phpFCMv1\Config\AndroidConfig;
12+
use PHPUnit\Framework\TestCase;
13+
14+
class AndroidConfigTest extends TestCase {
15+
16+
public function testSetCollapseKey() {
17+
$instance = new AndroidConfig();
18+
$instance -> setCollapseKey('Test');
19+
$payload = $instance -> getPayload();
20+
21+
$this -> assertArrayHasKey('android', $payload);
22+
$this -> assertArrayHasKey('collapse_key', $payload['android']);
23+
}
24+
25+
public function testSetPriority() {
26+
$instance = new AndroidConfig();
27+
$instance -> setPriority(AndroidConfig::PRIORITY_HIGH);
28+
$payload = $instance -> getPayload();
29+
30+
$this -> assertArrayHasKey('android',$payload);
31+
$this -> assertArrayHasKey('priority', $payload['android']);
32+
}
33+
34+
public function testSetTimeToLive() {
35+
$instance = new AndroidConfig();
36+
$instance -> setTimeToLive(4.0);
37+
$payload = $instance -> getPayload();
38+
39+
$this -> assertArrayHasKey('android',$payload);
40+
$this -> assertArrayHasKey('ttl', $payload['android']);
41+
$this -> assertStringEndsWith('s', $payload['android']['ttl']);
42+
}
43+
44+
public function testNoConfig() {
45+
$instance = new AndroidConfig();
46+
$payload = $instance -> getPayload();
47+
48+
$this -> assertNull($payload);
49+
}
50+
51+
public function testDuplicateOption() {
52+
$instance = new AndroidConfig();
53+
$instance -> setTimeToLive(4.0);
54+
$instance -> setTimeToLive(5.0);
55+
$payload = $instance -> getPayload();
56+
57+
$this -> assertEquals('5s', $payload['android']['ttl']);
58+
}
59+
}

0 commit comments

Comments
 (0)