ResultTest   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 82
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 1
Bugs 0 Features 1
Metric Value
wmc 5
lcom 1
cbo 2
dl 0
loc 82
rs 10
c 1
b 0
f 1

5 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 4 1
A testConstructorDate() 0 9 1
A testDefaults() 0 12 1
A testAccessorsMutators() 0 22 1
A testSerializable() 0 17 1
1
<?php
2
/**
3
 * Push notification services abstraction (http://github.com/juliangut/tify)
4
 *
5
 * @link https://github.com/juliangut/tify for the canonical source repository
6
 *
7
 * @license https://github.com/juliangut/tify/blob/master/LICENSE
8
 */
9
10
namespace Jgut\Tify\Tests;
11
12
use Jgut\Tify\Result;
13
14
/**
15
 * Result tests.
16
 */
17
class ResultTest extends \PHPUnit_Framework_TestCase
18
{
19
    /**
20
     * @var \Jgut\Tify\Result
21
     */
22
    protected $result;
23
24
    public function setUp()
25
    {
26
        $this->result = new Result('9a4ecb987ef59c88b12035278b86f26d448835939a4ecb987ef59c88b1203527');
27
    }
28
29
    /**
30
     * @expectedException \InvalidArgumentException
31
     */
32
    public function testConstructorDate()
33
    {
34
        $date = new \DateTime('2016-01-01 00:00:00+00:00');
35
36
        $result = new Result('aaa', $date->getTimestamp());
37
        self::assertEquals($date, $result->getDate());
38
39
        new Result('aaa', 'not_a_date');
40
    }
41
42
    public function testDefaults()
43
    {
44
        self::assertEquals(
45
            '9a4ecb987ef59c88b12035278b86f26d448835939a4ecb987ef59c88b1203527',
46
            $this->result->getToken()
47
        );
48
        self::assertInstanceOf('\DateTime', $this->result->getDate());
49
        self::assertEquals(Result::STATUS_SUCCESS, $this->result->getStatus());
50
        self::assertTrue($this->result->isSuccess());
51
        self::assertFalse($this->result->isError());
52
        self::assertEquals('', $this->result->getStatusMessage());
53
    }
54
55
    /**
56
     * @expectedException \InvalidArgumentException
57
     */
58
    public function testAccessorsMutators()
59
    {
60
        $this->result->setToken('b8e3802766d2ced54910e68332e8c1e204b05abe96421c21eecc9f0cbc1c7043');
61
        self::assertEquals(
62
            'b8e3802766d2ced54910e68332e8c1e204b05abe96421c21eecc9f0cbc1c7043',
63
            $this->result->getToken()
64
        );
65
66
        $date = new \DateTime;
67
        $this->result->setDate($date);
68
        self::assertEquals($date, $this->result->getDate());
69
70
        $this->result->setStatus(Result::STATUS_INVALID_DEVICE);
71
        self::assertEquals(Result::STATUS_INVALID_DEVICE, $this->result->getStatus());
72
        self::assertFalse($this->result->isSuccess());
73
        self::assertTrue($this->result->isError());
74
75
        $this->result->setStatusMessage('Error');
76
        self::assertEquals('Error', $this->result->getStatusMessage());
77
78
        $this->result->setStatus('fake_status');
79
    }
80
81
    public function testSerializable()
82
    {
83
        $date = new \DateTime;
84
        $serialized = [
85
            'token' => 'aaaaa',
86
            'date' => $date->format('c'),
87
            'status' => Result::STATUS_UNKNOWN_ERROR,
88
            'statusMessage' => 'Unknown Error',
89
        ];
90
91
        $this->result->setToken($serialized['token']);
92
        $this->result->setDate($date);
93
        $this->result->setStatus($serialized['status']);
94
        $this->result->setStatusMessage($serialized['statusMessage']);
95
96
        self::assertEquals(json_encode($serialized), json_encode($this->result));
97
    }
98
}
99