Completed
Branch 2.x (c99d86)
by Julián
08:01
created

MessageTest   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 104
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 1
Bugs 1 Features 0
Metric Value
wmc 8
lcom 1
cbo 2
dl 0
loc 104
rs 10
c 1
b 1
f 0
1
<?php
2
3
/*
4
 * Unified push notification services abstraction (http://github.com/juliangut/tify).
5
 *
6
 * @license BSD-3-Clause
7
 * @link https://github.com/juliangut/tify
8
 * @author Julián Gutiérrez <[email protected]>
9
 */
10
11
namespace Jgut\Tify\Tests\Message;
12
13
use Jgut\Tify\Message;
14
15
/**
16
 * Message tests.
17
 */
18
class MessageTest extends \PHPUnit_Framework_TestCase
19
{
20
    /**
21
     * @var Message
22
     */
23
    protected $message;
24
25
    /**
26
     * {@inheritdoc}
27
     */
28
    public function setUp()
29
    {
30
        $this->message = new Message;
31
    }
32
33
    public function testDefaults()
34
    {
35
        self::assertNull($this->message->getPayload('any_parameter'));
36
        self::assertEmpty($this->message->getPayloadData());
37
    }
38
39
    public function testMutators()
40
    {
41
        $this->message->setTitle('message title');
42
        self::assertTrue($this->message->hasParameter('title'));
43
        self::assertEquals('message title', $this->message->getParameter('title'));
44
45
        $this->message->setBody('message body');
46
        self::assertTrue($this->message->hasParameter('body'));
47
        self::assertEquals('message body', $this->message->getParameter('body'));
48
49
        self::assertEquals('data_', $this->message->getPayloadPrefix());
50
        $this->message->setPayloadPrefix('');
51
        self::assertEquals('', $this->message->getPayloadPrefix());
52
    }
53
54
    /**
55
     * @expectedException \InvalidArgumentException
56
     */
57
    public function testInvalidParameter()
58
    {
59
        $this->message->setParameter('made-up-parameter', true);
60
    }
61
62
    /**
63
     * @expectedException \InvalidArgumentException
64
     */
65
    public function testInvalidAPNSPayload()
66
    {
67
        $this->message->setPayloadPrefix('');
68
69
        $this->message->setPayload('apc', 'value');
70
    }
71
72
    /**
73
     * @dataProvider invalidGCMPayloadProvider
74
     *
75
     * @param string $parameter
76
     *
77
     * @expectedException \InvalidArgumentException
78
     */
79
    public function testInvalidGCMPayload($parameter)
80
    {
81
        $this->message->setPayloadPrefix('');
82
83
        $this->message->setPayload($parameter, 'value');
84
    }
85
86
    /**
87
     * Payload provider.
88
     *
89
     * @return array
90
     */
91
    public function invalidGCMPayloadProvider()
92
    {
93
        return [
94
            [''],
95
            ['google'],
96
            ['google_param'],
97
            ['gcm'],
98
            ['gcm_param'],
99
            ['from'],
100
            ['collapse_key'],
101
            ['delay_while_idle'],
102
            ['time_to_live'],
103
            ['restricted_package_name'],
104
            ['dry_run'],
105
            ['priority'],
106
            ['content_available'],
107
        ];
108
    }
109
110
    public function testPayload()
111
    {
112
        $this->message->setPayload('first', true);
113
        self::assertTrue($this->message->hasPayload('first'));
114
        self::assertTrue($this->message->getPayload('first'));
115
        self::assertCount(1, $this->message->getPayloadData());
116
117
        $this->message->setPayloadData([
118
            'second' => 'second',
119
            'third' => 'third',
120
        ]);
121
        self::assertTrue($this->message->hasPayload('second'));
122
        self::assertCount(2, $this->message->getPayloadData());
123
    }
124
}
125