UserTest::testJsonSerializeUser()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 17
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 17
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 12
nc 1
nop 0
1
<?php
2
3
namespace JhUserTest\Entity;
4
5
use Doctrine\Common\Collections\ArrayCollection;
6
use JhUser\Entity\HierarchicalRole;
7
use JhUser\Entity\User;
8
9
/**
10
 * Class UserTest
11
 * @package JhUserTest\Entity
12
 * @author Aydin Hassan <[email protected]>
13
 */
14
class UserTest extends \PHPUnit_Framework_TestCase
15
{
16
17
    /**
18
     * @var User
19
     */
20
    protected $user;
21
22
    /**
23
     * SetUp
24
     */
25
    public function setUp()
26
    {
27
        $this->user = new User;
28
    }
29
30
    /**
31
     * Test the setter/getters
32
     *
33
     * @param        string $name
34
     * @param        mixed  $value
35
     *
36
     * @dataProvider setterGetterProvider
37
     */
38
    public function testSetterGetter($name, $value)
39
    {
40
        $getMethod = 'get' . ucfirst($name);
41
        $setMethod = 'set' . ucfirst($name);
42
43
        $this->assertNull($this->user->$getMethod());
44
        $this->user->$setMethod($value);
45
        $this->assertSame($value, $this->user->$getMethod());
46
    }
47
48
    /**
49
     * @return array
50
     */
51
    public function setterGetterProvider()
52
    {
53
        return [
54
            ['id'          , 1],
55
            ['email'       , '[email protected]'],
56
            ['username'    , 'aydin'],
57
            ['username'    , 'aydin'],
58
            ['displayName' , 'Aydin'],
59
            ['state'       , null],
60
            ['createdAt'   , new \DateTime],
61
            ['createdAt'   , new \DateTime],
62
            ['password'    , 'password'],
63
        ];
64
    }
65
66
    public function testAddRole()
67
    {
68
        $user = new User;
69
70
        $role1 = new HierarchicalRole;
71
        $role2 = new HierarchicalRole;
72
73
        $user->addRole($role1);
74
        $this->assertContains($role1, $user->getRoles());
75
76
        $user->addRole($role2);
77
        $this->assertContains($role1, $user->getRoles());
78
        $this->assertContains($role2, $user->getRoles());
79
    }
80
81
    public function testSetRoles()
82
    {
83
        $user = new User;
84
85
        $roles = new ArrayCollection([
86
            new HierarchicalRole(),
87
            new HierarchicalRole(),
88
        ]);
89
90
        $user->setRoles($roles);
91
        $this->assertSame($roles->toArray(), $user->getRoles());
92
    }
93
94
    public function testSetRolesOverwritesExistingRoles()
95
    {
96
        $user = new User;
97
        $user->addRole(new HierarchicalRole());
98
99
        $roles = new ArrayCollection([
100
            new HierarchicalRole(),
101
            new HierarchicalRole(),
102
        ]);
103
104
        $user->setRoles($roles);
105
        $this->assertSame($roles->toArray(), $user->getRoles());
106
    }
107
108
    public function testPrePersistCreatedAtDateInstanceOfDateTime()
109
    {
110
        $user = new User;
111
        $this->assertNull($user->getCreatedAt());
112
        $user->setCreatedAtDate();
113
114
        $this->assertInstanceOf('DateTime', $user->getCreatedAt());
115
    }
116
117
    public function testJsonSerializeUser()
118
    {
119
        $user = new User;
120
        $user->setId(1)
121
            ->setDisplayName("Aydin Hassan")
122
            ->setState(null)
123
            ->setEmail("[email protected]");
124
125
        $expected = [
126
            'id'    => 1,
127
            'name'  => 'Aydin Hassan',
128
            'state' => null,
129
            'email' => '[email protected]'
130
        ];
131
132
        $this->assertEquals($expected, $user->jsonSerialize());
133
    }
134
}
135