Completed
Push — master ( 0e016e...c19ff2 )
by Łukasz
21:50
created

testGetUserPreferenceCount()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 0
dl 0
loc 11
rs 9.9
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * @copyright Copyright (C) eZ Systems AS. All rights reserved.
5
 * @license For full copyright and license information view LICENSE file distributed with this source code.
6
 */
7
declare(strict_types=1);
8
9
namespace eZ\Publish\API\Repository\Tests;
10
11
use eZ\Publish\API\Repository\Values\UserPreference\UserPreferenceSetStruct;
12
use eZ\Publish\API\Repository\Values\UserPreference\UserPreference;
13
use eZ\Publish\API\Repository\Values\UserPreference\UserPreferenceList;
14
15
/**
16
 * Test case for the UserPreferenceService.
17
 *
18
 * @see \eZ\Publish\API\Repository\UserPreferenceService
19
 */
20
class UserPreferenceServiceTest extends BaseTest
21
{
22
    /**
23
     * @covers \eZ\Publish\API\Repository\UserPreferenceService::loadUserPreferences()
24
     */
25 View Code Duplication
    public function testLoadUserPreferences()
26
    {
27
        $repository = $this->getRepository();
28
29
        /* BEGIN: Use Case */
30
        $userPreferenceService = $repository->getUserPreferenceService();
31
        $userPreferenceList = $userPreferenceService->loadUserPreferences(0, 25);
32
        /* END: Use Case */
33
34
        $this->assertInstanceOf(UserPreferenceList::class, $userPreferenceList);
35
        $this->assertInternalType('array', $userPreferenceList->items);
36
        $this->assertInternalType('int', $userPreferenceList->totalCount);
37
        $this->assertEquals(5, $userPreferenceList->totalCount);
38
    }
39
40
    /**
41
     * @covers \eZ\Publish\API\Repository\UserPreferenceService::getUserPreference()
42
     */
43
    public function testGetUserPreference()
44
    {
45
        $repository = $this->getRepository();
46
47
        $userPreferenceName = 'setting_1';
48
49
        /* BEGIN: Use Case */
50
        $userPreferenceService = $repository->getUserPreferenceService();
51
        // $userPreferenceName is the name of an existing preference
52
        $userPreference = $userPreferenceService->getUserPreference($userPreferenceName);
53
        /* END: Use Case */
54
55
        $this->assertInstanceOf(UserPreference::class, $userPreference);
56
        $this->assertEquals($userPreferenceName, $userPreference->name);
57
    }
58
59
    /**
60
     * @covers \eZ\Publish\API\Repository\UserPreferenceService::setUserPreference()
61
     * @depends testGetUserPreference
62
     */
63
    public function testSetUserPreference()
64
    {
65
        $repository = $this->getRepository();
66
67
        $userPreferenceName = 'timezone';
68
69
        /* BEGIN: Use Case */
70
        $userPreferenceService = $repository->getUserPreferenceService();
71
72
        $setStruct = new UserPreferenceSetStruct([
73
            'name' => $userPreferenceName,
74
            'value' => 'America/New_York',
75
        ]);
76
77
        $userPreferenceService->setUserPreference([$setStruct]);
78
        $userPreference = $userPreferenceService->getUserPreference($userPreferenceName);
79
        /* END: Use Case */
80
81
        $this->assertInstanceOf(UserPreference::class, $userPreference);
82
        $this->assertEquals($userPreferenceName, $userPreference->name);
83
    }
84
85
    /**
86
     * @covers \eZ\Publish\API\Repository\UserPreferenceService::setUserPreference()
87
     * @depends testSetUserPreference
88
     *
89
     * @expectedException \eZ\Publish\Core\Base\Exceptions\InvalidArgumentException
90
     */
91 View Code Duplication
    public function testSetUserPreferenceThrowsInvalidArgumentExceptionOnInvalidValue()
92
    {
93
        $repository = $this->getRepository();
94
95
        /* BEGIN: Use Case */
96
        $userPreferenceService = $repository->getUserPreferenceService();
97
98
        $setStruct = new UserPreferenceSetStruct([
99
            'name' => 'setting',
100
            'value' => new \stdClass(),
101
        ]);
102
103
        // This call will fail because value is not specified
104
        $userPreferenceService->setUserPreference([$setStruct]);
105
        /* END: Use Case */
106
    }
107
108
    /**
109
     * @covers \eZ\Publish\API\Repository\UserPreferenceService::setUserPreference()
110
     * @depends testSetUserPreference
111
     * @expectedException \eZ\Publish\API\Repository\Exceptions\InvalidArgumentException
112
     */
113 View Code Duplication
    public function testSetUserPreferenceThrowsInvalidArgumentExceptionOnEmptyName()
114
    {
115
        $repository = $this->getRepository();
116
117
        /* BEGIN: Use Case */
118
        $userPreferenceService = $repository->getUserPreferenceService();
119
120
        $setStruct = new UserPreferenceSetStruct([
121
            'value' => 'value',
122
        ]);
123
124
        // This call will fail because value is not specified
125
        $userPreferenceService->setUserPreference([$setStruct]);
126
        /* END: Use Case */
127
    }
128
129
    /**
130
     * @covers \eZ\Publish\API\Repository\UserPreferenceService::getUserPreferenceCount()
131
     */
132
    public function testGetUserPreferenceCount()
133
    {
134
        $repository = $this->getRepository();
135
136
        /* BEGIN: Use Case */
137
        $userPreferenceService = $repository->getUserPreferenceService();
138
        $userPreferenceCount = $userPreferenceService->getUserPreferenceCount();
139
        /* END: Use Case */
140
141
        $this->assertEquals(5, $userPreferenceCount);
142
    }
143
}
144