Completed
Push — ezp28048_trash_move_when_cant_... ( 55080c...c86600 )
by
unknown
13:03
created

AbstractSlotTest::getPermissionResolverMock()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 24
Code Lines 19

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 19
nc 1
nop 0
dl 0
loc 24
rs 8.9713
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * This file is part of the eZ Publish Kernel package.
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
namespace eZ\Publish\Core\MVC\Symfony\Cache\Tests\Http\SignalSlot;
10
11
use eZ\Publish\Core\Repository\Helper\LimitationService;
12
use eZ\Publish\Core\Repository\Helper\RoleDomainMapper;
13
use eZ\Publish\Core\Repository\Permission\PermissionResolver;
14
use eZ\Publish\Core\Repository\Repository;
15
use eZ\Publish\API\Repository\Values\User\UserReference;
16
use eZ\Publish\SPI\Persistence\User\Handler as UserHandler;
17
use PHPUnit\Framework\TestCase;
18
19
abstract class AbstractSlotTest extends TestCase implements SlotTest
20
{
21
    /** @var \eZ\Publish\Core\MVC\Symfony\Cache\Http\SignalSlot\AssignSectionSlot */
22
    protected $slot;
23
24
    /** @var \eZ\Publish\Core\MVC\Symfony\Cache\GatewayCachePurger|\PHPUnit_Framework_MockObject_MockObject */
25
    protected $cachePurgerMock;
26
27
    /** @var \eZ\Publish\Core\Repository\Repository|\PHPUnit_Framework_MockObject_MockObject */
28
    protected $repositoryMock;
29
30
    private $contentId = 42;
31
32
    private static $signal;
33
34
    public function setUp()
35
    {
36
        $this->cachePurgerMock = $this->getMock('eZ\Publish\Core\MVC\Symfony\Cache\GatewayCachePurger');
37
        $this->repositoryMock = $this
38
            ->getMockBuilder(Repository::class)
39
            ->disableOriginalConstructor()
40
            ->setMethods(
41
                array_diff(
42
                    get_class_methods(Repository::class),
43
                    array('sudo')
44
                )
45
            )
46
            ->getMock();
47
48
        $this->repositoryMock
49
            ->expects($this->any())
50
            ->method('getPermissionResolver')
51
            ->will($this->returnValue($this->getPermissionResolverMock()));
52
53
        $this->slot = $this->createSlot();
54
        self::$signal = $this->createSignal();
55
    }
56
57
    protected function createSlot()
58
    {
59
        $class = $this->getSlotClass();
60
61
        return new $class($this->cachePurgerMock, $this->repositoryMock);
62
    }
63
64
    /**
65
     * @return \eZ\Publish\Core\MVC\Symfony\Cache\GatewayCachePurger|\PHPUnit_Framework_MockObject_MockObject
66
     */
67
    protected function getCachePurger()
68
    {
69
        return $this->cachePurgerMock;
70
    }
71
72
    /**
73
     * @return \eZ\Publish\Core\Repository\Permission\PermissionResolver|\PHPUnit_Framework_MockObject_MockObject
74
     */
75
    private function getPermissionResolverMock()
76
    {
77
        return $this
78
            ->getMockBuilder(PermissionResolver::class)
79
            ->setMethods(null)
80
            ->setConstructorArgs(
81
                [
82
                    $this
83
                        ->getMockBuilder(RoleDomainMapper::class)
84
                        ->disableOriginalConstructor()
85
                        ->getMock(),
86
                    $this
87
                        ->getMockBuilder(LimitationService::class)
88
                        ->getMock(),
89
                    $this
90
                        ->getMockBuilder(UserHandler::class)
91
                        ->getMock(),
92
                    $this
93
                        ->getMockBuilder(UserReference::class)
94
                        ->getMock(),
95
                ]
96
            )
97
            ->getMock();
98
    }
99
100
    /**
101
     * @dataProvider getUnreceivedSignals
102
     */
103
    public function testDoesNotReceiveOtherSignals($signal)
104
    {
105
        $this->cachePurgerMock->expects($this->never())->method('purgeForContent');
106
        $this->cachePurgerMock->expects($this->never())->method('purgeAll');
107
108
        $this->slot->receive($signal);
109
    }
110
111
    protected function receive($signal)
112
    {
113
        $this->slot->receive($signal);
114
    }
115
116
    public static function getReceivedSignals()
117
    {
118
        return [[static::createSignal()]];
119
    }
120
121
    /**
122
     * All existing SignalSlots.
123
     */
124
    public static function getUnreceivedSignals()
125
    {
126
        static $arguments = [];
127
128
        if (empty($arguments)) {
129
            $signals = self::getAllSignals();
130
131
            foreach ($signals as $signalClass) {
132
                if (in_array($signalClass, static::getReceivedSignalClasses())) {
133
                    continue;
134
                }
135
                $arguments[] = [new $signalClass()];
136
            }
137
        }
138
139
        return $arguments;
140
    }
141
142
    /**
143
     * @return array
144
     */
145
    private static function getAllSignals()
146
    {
147
        return array(
148
            'eZ\Publish\Core\SignalSlot\Signal\URLAliasService\CreateUrlAliasSignal',
149
            'eZ\Publish\Core\SignalSlot\Signal\URLAliasService\RemoveAliasesSignal',
150
            'eZ\Publish\Core\SignalSlot\Signal\URLAliasService\CreateGlobalUrlAliasSignal',
151
            'eZ\Publish\Core\SignalSlot\Signal\ContentTypeService\CreateContentTypeSignal',
152
            'eZ\Publish\Core\SignalSlot\Signal\ContentTypeService\AddFieldDefinitionSignal',
153
            'eZ\Publish\Core\SignalSlot\Signal\ContentTypeService\CopyContentTypeSignal',
154
            'eZ\Publish\Core\SignalSlot\Signal\ContentTypeService\DeleteContentTypeSignal',
155
            'eZ\Publish\Core\SignalSlot\Signal\ContentTypeService\UpdateContentTypeGroupSignal',
156
            'eZ\Publish\Core\SignalSlot\Signal\ContentTypeService\DeleteContentTypeGroupSignal',
157
            'eZ\Publish\Core\SignalSlot\Signal\ContentTypeService\UnassignContentTypeGroupSignal',
158
            'eZ\Publish\Core\SignalSlot\Signal\ContentTypeService\PublishContentTypeDraftSignal',
159
            'eZ\Publish\Core\SignalSlot\Signal\ContentTypeService\AssignContentTypeGroupSignal',
160
            'eZ\Publish\Core\SignalSlot\Signal\ContentTypeService\UpdateFieldDefinitionSignal',
161
            'eZ\Publish\Core\SignalSlot\Signal\ContentTypeService\UpdateContentTypeDraftSignal',
162
            'eZ\Publish\Core\SignalSlot\Signal\ContentTypeService\RemoveFieldDefinitionSignal',
163
            'eZ\Publish\Core\SignalSlot\Signal\ContentTypeService\CreateContentTypeDraftSignal',
164
            'eZ\Publish\Core\SignalSlot\Signal\ContentTypeService\CreateContentTypeGroupSignal',
165
            'eZ\Publish\Core\SignalSlot\Signal\LanguageService\EnableLanguageSignal',
166
            'eZ\Publish\Core\SignalSlot\Signal\LanguageService\UpdateLanguageNameSignal',
167
            'eZ\Publish\Core\SignalSlot\Signal\LanguageService\CreateLanguageSignal',
168
            'eZ\Publish\Core\SignalSlot\Signal\LanguageService\DisableLanguageSignal',
169
            'eZ\Publish\Core\SignalSlot\Signal\LanguageService\DeleteLanguageSignal',
170
            'eZ\Publish\Core\SignalSlot\Signal\UserService\MoveUserGroupSignal',
171
            'eZ\Publish\Core\SignalSlot\Signal\UserService\DeleteUserGroupSignal',
172
            'eZ\Publish\Core\SignalSlot\Signal\UserService\CreateUserGroupSignal',
173
            'eZ\Publish\Core\SignalSlot\Signal\UserService\UpdateUserGroupSignal',
174
            'eZ\Publish\Core\SignalSlot\Signal\UserService\UnAssignUserFromUserGroupSignal',
175
            'eZ\Publish\Core\SignalSlot\Signal\UserService\AssignUserToUserGroupSignal',
176
            'eZ\Publish\Core\SignalSlot\Signal\UserService\DeleteUserSignal',
177
            'eZ\Publish\Core\SignalSlot\Signal\UserService\CreateUserSignal',
178
            'eZ\Publish\Core\SignalSlot\Signal\UserService\UpdateUserSignal',
179
            'eZ\Publish\Core\SignalSlot\Signal\SectionService\DeleteSectionSignal',
180
            'eZ\Publish\Core\SignalSlot\Signal\SectionService\CreateSectionSignal',
181
            'eZ\Publish\Core\SignalSlot\Signal\SectionService\UpdateSectionSignal',
182
            'eZ\Publish\Core\SignalSlot\Signal\SectionService\AssignSectionSignal',
183
            'eZ\Publish\Core\SignalSlot\Signal\RoleService\AssignRoleToUserGroupSignal',
184
            'eZ\Publish\Core\SignalSlot\Signal\RoleService\UpdatePolicySignal',
185
            'eZ\Publish\Core\SignalSlot\Signal\RoleService\CreateRoleSignal',
186
            'eZ\Publish\Core\SignalSlot\Signal\RoleService\RemovePolicySignal',
187
            'eZ\Publish\Core\SignalSlot\Signal\RoleService\UnassignRoleFromUserSignal',
188
            'eZ\Publish\Core\SignalSlot\Signal\RoleService\AddPolicySignal',
189
            'eZ\Publish\Core\SignalSlot\Signal\RoleService\UnassignRoleFromUserGroupSignal',
190
            'eZ\Publish\Core\SignalSlot\Signal\RoleService\UpdateRoleSignal',
191
            'eZ\Publish\Core\SignalSlot\Signal\RoleService\AssignRoleToUserSignal',
192
            'eZ\Publish\Core\SignalSlot\Signal\RoleService\DeleteRoleSignal',
193
            'eZ\Publish\Core\SignalSlot\Signal\TrashService\TrashSignal',
194
            'eZ\Publish\Core\SignalSlot\Signal\TrashService\EmptyTrashSignal',
195
            'eZ\Publish\Core\SignalSlot\Signal\TrashService\RecoverSignal',
196
            'eZ\Publish\Core\SignalSlot\Signal\TrashService\DeleteTrashItemSignal',
197
            'eZ\Publish\Core\SignalSlot\Signal\ObjectStateService\DeleteObjectStateSignal',
198
            'eZ\Publish\Core\SignalSlot\Signal\ObjectStateService\CreateObjectStateSignal',
199
            'eZ\Publish\Core\SignalSlot\Signal\ObjectStateService\DeleteObjectStateGroupSignal',
200
            'eZ\Publish\Core\SignalSlot\Signal\ObjectStateService\CreateObjectStateGroupSignal',
201
            'eZ\Publish\Core\SignalSlot\Signal\ObjectStateService\UpdateObjectStateSignal',
202
            'eZ\Publish\Core\SignalSlot\Signal\ObjectStateService\UpdateObjectStateGroupSignal',
203
            'eZ\Publish\Core\SignalSlot\Signal\ObjectStateService\SetContentStateSignal',
204
            'eZ\Publish\Core\SignalSlot\Signal\ObjectStateService\SetPriorityOfObjectStateSignal',
205
            'eZ\Publish\Core\SignalSlot\Signal\URLWildcardService\TranslateSignal',
206
            'eZ\Publish\Core\SignalSlot\Signal\URLWildcardService\RemoveSignal',
207
            'eZ\Publish\Core\SignalSlot\Signal\URLWildcardService\CreateSignal',
208
            'eZ\Publish\Core\SignalSlot\Signal\ContentService\UpdateContentSignal',
209
            'eZ\Publish\Core\SignalSlot\Signal\ContentService\CreateContentDraftSignal',
210
            'eZ\Publish\Core\SignalSlot\Signal\ContentService\AddRelationSignal',
211
            'eZ\Publish\Core\SignalSlot\Signal\ContentService\CreateContentSignal',
212
            'eZ\Publish\Core\SignalSlot\Signal\ContentService\DeleteContentSignal',
213
            'eZ\Publish\Core\SignalSlot\Signal\ContentService\AddTranslationInfoSignal',
214
            'eZ\Publish\Core\SignalSlot\Signal\ContentService\CopyContentSignal',
215
            'eZ\Publish\Core\SignalSlot\Signal\ContentService\UpdateContentMetadataSignal',
216
            'eZ\Publish\Core\SignalSlot\Signal\ContentService\TranslateVersionSignal',
217
            'eZ\Publish\Core\SignalSlot\Signal\ContentService\PublishVersionSignal',
218
            'eZ\Publish\Core\SignalSlot\Signal\ContentService\DeleteRelationSignal',
219
            'eZ\Publish\Core\SignalSlot\Signal\ContentService\DeleteVersionSignal',
220
            'eZ\Publish\Core\SignalSlot\Signal\LocationService\UpdateLocationSignal',
221
            'eZ\Publish\Core\SignalSlot\Signal\LocationService\HideLocationSignal',
222
            'eZ\Publish\Core\SignalSlot\Signal\LocationService\SwapLocationSignal',
223
            'eZ\Publish\Core\SignalSlot\Signal\LocationService\MoveSubtreeSignal',
224
            'eZ\Publish\Core\SignalSlot\Signal\LocationService\UnhideLocationSignal',
225
            'eZ\Publish\Core\SignalSlot\Signal\LocationService\CreateLocationSignal',
226
            'eZ\Publish\Core\SignalSlot\Signal\LocationService\DeleteLocationSignal',
227
            'eZ\Publish\Core\SignalSlot\Signal\LocationService\CopySubtreeSignal',
228
        );
229
    }
230
}
231