Completed
Push — ezp-25679 ( 94b1c5 )
by André
27:57
created

RepositoryTest::testServiceMethod()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 42
Code Lines 36

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 36
nc 1
nop 2
dl 0
loc 42
rs 8.8571
c 1
b 0
f 0
1
<?php
2
3
/**
4
 * File containing the RepositoryTest class.
5
 *
6
 * @copyright Copyright (C) eZ Systems AS. All rights reserved.
7
 * @license For full copyright and license information view LICENSE file distributed with this source code.
8
 *
9
 * @version //autogentag//
10
 */
11
namespace eZ\Publish\Core\SignalSlot\Tests;
12
13
use eZ\Publish\Core\SignalSlot\Repository;
14
use eZ\Publish\Core\Repository\Values\User\User;
15
use eZ\Publish\Core\Repository\Values\Content\Location;
16
use PHPUnit_Framework_TestCase;
17
18
class RepositoryTest extends PHPUnit_Framework_TestCase
19
{
20
    /**
21
     * @dataProvider serviceMethods
22
     */
23
    public function testServiceMethod($method, $class)
24
    {
25
        $innerRepositoryMock = $this->getMockBuilder('eZ\\Publish\Core\\Repository\\Repository')->disableOriginalConstructor()->getMock();
26
        $signalDispatcherMock = $this->getMock('eZ\\Publish\\Core\\SignalSlot\\SignalDispatcher');
27
28
        $contentServiceMock = $this->getMockBuilder('eZ\\Publish\\Core\\SignalSlot\\ContentService')->disableOriginalConstructor()->getMock();
29
        $contentTypeServiceMock = $this->getMockBuilder('eZ\\Publish\\Core\\SignalSlot\\ContentTypeService')->disableOriginalConstructor()->getMock();
30
        $fieldTypeServiceMock = $this->getMockBuilder('eZ\\Publish\\Core\\SignalSlot\\FieldTypeService')->disableOriginalConstructor()->getMock();
31
        $roleServiceMock = $this->getMockBuilder('eZ\\Publish\\Core\\SignalSlot\\RoleService')->disableOriginalConstructor()->getMock();
32
        $objectStateServiceMock = $this->getMockBuilder('eZ\\Publish\\Core\\SignalSlot\\ObjectStateService')->disableOriginalConstructor()->getMock();
33
        $urlWildcardServiceMock = $this->getMockBuilder('eZ\\Publish\\Core\\SignalSlot\\URLWildcardService')->disableOriginalConstructor()->getMock();
34
        $urlAliasServiceMock = $this->getMockBuilder('eZ\\Publish\\Core\\SignalSlot\\URLAliasService')->disableOriginalConstructor()->getMock();
35
        $userServiceMock = $this->getMockBuilder('eZ\\Publish\\Core\\SignalSlot\\UserService')->disableOriginalConstructor()->getMock();
36
        $searchServiceMock = $this->getMockBuilder('eZ\\Publish\\Core\\SignalSlot\\SearchService')->disableOriginalConstructor()->getMock();
37
        $sectionServiceMock = $this->getMockBuilder('eZ\\Publish\\Core\\SignalSlot\\SectionService')->disableOriginalConstructor()->getMock();
38
        $trashServiceMock = $this->getMockBuilder('eZ\\Publish\\Core\\SignalSlot\\TrashService')->disableOriginalConstructor()->getMock();
39
        $locationServiceMock = $this->getMockBuilder('eZ\\Publish\\Core\\SignalSlot\\LocationService')->disableOriginalConstructor()->getMock();
40
        $languageServiceMock = $this->getMockBuilder('eZ\\Publish\\Core\\SignalSlot\\LanguageService')->disableOriginalConstructor()->getMock();
41
42
        $repository = new Repository(
43
            $innerRepositoryMock,
44
            $signalDispatcherMock,
45
            $contentServiceMock,
46
            $contentTypeServiceMock,
47
            $fieldTypeServiceMock,
48
            $roleServiceMock,
49
            $objectStateServiceMock,
50
            $urlWildcardServiceMock,
51
            $urlAliasServiceMock,
52
            $userServiceMock,
53
            $searchServiceMock,
54
            $sectionServiceMock,
55
            $trashServiceMock,
56
            $locationServiceMock,
57
            $languageServiceMock
58
        );
59
60
        $service = $repository->{$method}();
61
        $this->assertInstanceOf($class, $service);
62
        $service2 = $repository->{$method}();
63
        $this->assertTrue($service === $service2);
64
    }
65
66
    public function serviceMethods()
67
    {
68
        return array(
69
            array(
70
                'getContentService',
71
                '\eZ\Publish\Core\SignalSlot\ContentService',
72
            ),
73
            array(
74
                'getContentLanguageService',
75
                '\eZ\Publish\Core\SignalSlot\LanguageService',
76
            ),
77
            array(
78
                'getContentTypeService',
79
                '\eZ\Publish\Core\SignalSlot\ContentTypeService',
80
            ),
81
            array(
82
                'getLocationService',
83
                '\eZ\Publish\Core\SignalSlot\LocationService',
84
            ),
85
            array(
86
                'getTrashService',
87
                '\eZ\Publish\Core\SignalSlot\TrashService',
88
            ),
89
            array(
90
                'getSectionService',
91
                '\eZ\Publish\Core\SignalSlot\SectionService',
92
            ),
93
            array(
94
                'getUserService',
95
                '\eZ\Publish\Core\SignalSlot\UserService',
96
            ),
97
            array(
98
                'getURLAliasService',
99
                '\eZ\Publish\Core\SignalSlot\URLAliasService',
100
            ),
101
            array(
102
                'getURLWildcardService',
103
                '\eZ\Publish\Core\SignalSlot\URLWildcardService',
104
            ),
105
            array(
106
                'getObjectStateService',
107
                '\eZ\Publish\Core\SignalSlot\ObjectStateService',
108
            ),
109
            array(
110
                'getRoleService',
111
                '\eZ\Publish\Core\SignalSlot\RoleService',
112
            ),
113
            array(
114
                'getSearchService',
115
                '\eZ\Publish\Core\SignalSlot\SearchService',
116
            ),
117
            array(
118
                'getFieldTypeService',
119
                '\eZ\Publish\Core\SignalSlot\FieldTypeService',
120
            ),
121
        );
122
    }
123
124
    /**
125
     * @dataProvider aggregatedMethods
126
     */
127
    public function testAggregation($method, $parameters, $return)
128
    {
129
        $innerRepositoryMock = $this->getMockBuilder('eZ\\Publish\Core\\Repository\\Repository')->disableOriginalConstructor()->getMock();
130
        $signalDispatcherMock = $this->getMock('eZ\\Publish\\Core\\SignalSlot\\SignalDispatcher');
131
132
        $contentServiceMock = $this->getMockBuilder('eZ\\Publish\\Core\\SignalSlot\\ContentService')->disableOriginalConstructor()->getMock();
133
        $contentTypeServiceMock = $this->getMockBuilder('eZ\\Publish\\Core\\SignalSlot\\ContentTypeService')->disableOriginalConstructor()->getMock();
134
        $fieldTypeServiceMock = $this->getMockBuilder('eZ\\Publish\\Core\\SignalSlot\\FieldTypeService')->disableOriginalConstructor()->getMock();
135
        $roleServiceMock = $this->getMockBuilder('eZ\\Publish\\Core\\SignalSlot\\RoleService')->disableOriginalConstructor()->getMock();
136
        $objectStateServiceMock = $this->getMockBuilder('eZ\\Publish\\Core\\SignalSlot\\ObjectStateService')->disableOriginalConstructor()->getMock();
137
        $urlWildcardServiceMock = $this->getMockBuilder('eZ\\Publish\\Core\\SignalSlot\\URLWildcardService')->disableOriginalConstructor()->getMock();
138
        $urlAliasServiceMock = $this->getMockBuilder('eZ\\Publish\\Core\\SignalSlot\\URLAliasService')->disableOriginalConstructor()->getMock();
139
        $userServiceMock = $this->getMockBuilder('eZ\\Publish\\Core\\SignalSlot\\UserService')->disableOriginalConstructor()->getMock();
140
        $searchServiceMock = $this->getMockBuilder('eZ\\Publish\\Core\\SignalSlot\\SearchService')->disableOriginalConstructor()->getMock();
141
        $sectionServiceMock = $this->getMockBuilder('eZ\\Publish\\Core\\SignalSlot\\SectionService')->disableOriginalConstructor()->getMock();
142
        $trashServiceMock = $this->getMockBuilder('eZ\\Publish\\Core\\SignalSlot\\TrashService')->disableOriginalConstructor()->getMock();
143
        $locationServiceMock = $this->getMockBuilder('eZ\\Publish\\Core\\SignalSlot\\LocationService')->disableOriginalConstructor()->getMock();
144
        $languageServiceMock = $this->getMockBuilder('eZ\\Publish\\Core\\SignalSlot\\LanguageService')->disableOriginalConstructor()->getMock();
145
146
        $innerRepositoryMock->expects($this->once())
147
            ->method($method)
148
            ->will(
149
                $this->returnValueMap(
150
                    array(array_merge($parameters, array($return)))
151
                )
152
            );
153
154
        $repository = new Repository(
155
            $innerRepositoryMock,
156
            $signalDispatcherMock,
157
            $contentServiceMock,
158
            $contentTypeServiceMock,
159
            $fieldTypeServiceMock,
160
            $roleServiceMock,
161
            $objectStateServiceMock,
162
            $urlWildcardServiceMock,
163
            $urlAliasServiceMock,
164
            $userServiceMock,
165
            $searchServiceMock,
166
            $sectionServiceMock,
167
            $trashServiceMock,
168
            $locationServiceMock,
169
            $languageServiceMock
170
        );
171
172
        $result = call_user_func_array(array($repository, $method), $parameters);
173
        $this->assertTrue($result === $return);
174
    }
175
176
    public function aggregatedMethods()
177
    {
178
        $ts = 374390100;
179
        $dt = new \DateTime();
180
        $dt->setTimestamp($ts);
181
182
        return array(
183
            array(
184
                'getCurrentUser',
185
                array(),
186
                new User(),
187
            ),
188
            array(
189
                'setCurrentUser',
190
                array(new User()),
191
                null,
192
            ),
193
            array(
194
                'hasAccess',
195
                array('module', 'function', new User()),
196
                array('limitations'),
197
            ),
198
            array(
199
                'canUser',
200
                array('module', 'function', new User(), new Location()),
201
                false,
202
            ),
203
            array(
204
                'beginTransaction',
205
                array(),
206
                true,
207
            ),
208
            array(
209
                'commit',
210
                array(),
211
                true,
212
            ),
213
            array(
214
                'rollback',
215
                array(),
216
                true,
217
            ),
218
            array(
219
                'createDateTime',
220
                array($ts),
221
                $dt,
222
            ),
223
        );
224
    }
225
}
226