Completed
Push — ezp-30616-follow-up ( 2e0607...b74676 )
by
unknown
35:08 queued 20:12
created

testUpdateLanguageNameStopPropagationInBeforeEvents()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 37

Duplication

Lines 37
Ratio 100 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 0
dl 37
loc 37
rs 9.328
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
namespace eZ\Publish\Core\Event\Tests;
8
9
use eZ\Publish\API\Repository\Events\Language\BeforeCreateLanguageEvent as BeforeCreateLanguageEventInterface;
10
use eZ\Publish\API\Repository\Events\Language\BeforeDeleteLanguageEvent as BeforeDeleteLanguageEventInterface;
11
use eZ\Publish\API\Repository\Events\Language\BeforeDisableLanguageEvent as BeforeDisableLanguageEventInterface;
12
use eZ\Publish\API\Repository\Events\Language\BeforeEnableLanguageEvent as BeforeEnableLanguageEventInterface;
13
use eZ\Publish\API\Repository\Events\Language\BeforeUpdateLanguageNameEvent as BeforeUpdateLanguageNameEventInterface;
14
use eZ\Publish\API\Repository\Events\Language\CreateLanguageEvent as CreateLanguageEventInterface;
15
use eZ\Publish\API\Repository\Events\Language\DeleteLanguageEvent as DeleteLanguageEventInterface;
16
use eZ\Publish\API\Repository\Events\Language\DisableLanguageEvent as DisableLanguageEventInterface;
17
use eZ\Publish\API\Repository\Events\Language\EnableLanguageEvent as EnableLanguageEventInterface;
18
use eZ\Publish\API\Repository\Events\Language\UpdateLanguageNameEvent as UpdateLanguageNameEventInterface;
19
use eZ\Publish\API\Repository\LanguageService as LanguageServiceInterface;
20
use eZ\Publish\API\Repository\Values\Content\Language;
21
use eZ\Publish\API\Repository\Values\Content\LanguageCreateStruct;
22
use eZ\Publish\Core\Event\LanguageService;
23
24
class LanguageServiceTest extends AbstractServiceTest
25
{
26
    public function testDeleteLanguageEvents()
27
    {
28
        $traceableEventDispatcher = $this->getEventDispatcher(
29
            BeforeDeleteLanguageEventInterface::class,
30
            DeleteLanguageEventInterface::class
31
        );
32
33
        $parameters = [
34
            $this->createMock(Language::class),
35
        ];
36
37
        $innerServiceMock = $this->createMock(LanguageServiceInterface::class);
38
39
        $service = new LanguageService($innerServiceMock, $traceableEventDispatcher);
40
        $service->deleteLanguage(...$parameters);
41
42
        $calledListeners = $this->getListenersStack($traceableEventDispatcher->getCalledListeners());
43
44
        $this->assertSame($calledListeners, [
45
            [BeforeDeleteLanguageEventInterface::class, 0],
46
            [DeleteLanguageEventInterface::class, 0],
47
        ]);
48
        $this->assertSame([], $traceableEventDispatcher->getNotCalledListeners());
49
    }
50
51
    public function testDeleteLanguageStopPropagationInBeforeEvents()
52
    {
53
        $traceableEventDispatcher = $this->getEventDispatcher(
54
            BeforeDeleteLanguageEventInterface::class,
55
            DeleteLanguageEventInterface::class
56
        );
57
58
        $parameters = [
59
            $this->createMock(Language::class),
60
        ];
61
62
        $innerServiceMock = $this->createMock(LanguageServiceInterface::class);
63
64
        $traceableEventDispatcher->addListener(BeforeDeleteLanguageEventInterface::class, function (BeforeDeleteLanguageEventInterface $event) {
65
            $event->stopPropagation();
66
        }, 10);
67
68
        $service = new LanguageService($innerServiceMock, $traceableEventDispatcher);
69
        $service->deleteLanguage(...$parameters);
70
71
        $calledListeners = $this->getListenersStack($traceableEventDispatcher->getCalledListeners());
72
        $notCalledListeners = $this->getListenersStack($traceableEventDispatcher->getNotCalledListeners());
73
74
        $this->assertSame($calledListeners, [
75
            [BeforeDeleteLanguageEventInterface::class, 10],
76
        ]);
77
        $this->assertSame($notCalledListeners, [
78
            [BeforeDeleteLanguageEventInterface::class, 0],
79
            [DeleteLanguageEventInterface::class, 0],
80
        ]);
81
    }
82
83 View Code Duplication
    public function testCreateLanguageEvents()
84
    {
85
        $traceableEventDispatcher = $this->getEventDispatcher(
86
            BeforeCreateLanguageEventInterface::class,
87
            CreateLanguageEventInterface::class
88
        );
89
90
        $parameters = [
91
            $this->createMock(LanguageCreateStruct::class),
92
        ];
93
94
        $language = $this->createMock(Language::class);
95
        $innerServiceMock = $this->createMock(LanguageServiceInterface::class);
96
        $innerServiceMock->method('createLanguage')->willReturn($language);
0 ignored issues
show
Bug introduced by
The method method() does not seem to exist on object<PHPUnit\Framework\MockObject\MockObject>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
97
98
        $service = new LanguageService($innerServiceMock, $traceableEventDispatcher);
99
        $result = $service->createLanguage(...$parameters);
100
101
        $calledListeners = $this->getListenersStack($traceableEventDispatcher->getCalledListeners());
102
103
        $this->assertSame($language, $result);
104
        $this->assertSame($calledListeners, [
105
            [BeforeCreateLanguageEventInterface::class, 0],
106
            [CreateLanguageEventInterface::class, 0],
107
        ]);
108
        $this->assertSame([], $traceableEventDispatcher->getNotCalledListeners());
109
    }
110
111 View Code Duplication
    public function testReturnCreateLanguageResultInBeforeEvents()
112
    {
113
        $traceableEventDispatcher = $this->getEventDispatcher(
114
            BeforeCreateLanguageEventInterface::class,
115
            CreateLanguageEventInterface::class
116
        );
117
118
        $parameters = [
119
            $this->createMock(LanguageCreateStruct::class),
120
        ];
121
122
        $language = $this->createMock(Language::class);
123
        $eventLanguage = $this->createMock(Language::class);
124
        $innerServiceMock = $this->createMock(LanguageServiceInterface::class);
125
        $innerServiceMock->method('createLanguage')->willReturn($language);
0 ignored issues
show
Bug introduced by
The method method() does not seem to exist on object<PHPUnit\Framework\MockObject\MockObject>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
126
127
        $traceableEventDispatcher->addListener(BeforeCreateLanguageEventInterface::class, function (BeforeCreateLanguageEventInterface $event) use ($eventLanguage) {
128
            $event->setLanguage($eventLanguage);
129
        }, 10);
130
131
        $service = new LanguageService($innerServiceMock, $traceableEventDispatcher);
132
        $result = $service->createLanguage(...$parameters);
133
134
        $calledListeners = $this->getListenersStack($traceableEventDispatcher->getCalledListeners());
135
136
        $this->assertSame($eventLanguage, $result);
137
        $this->assertSame($calledListeners, [
138
            [BeforeCreateLanguageEventInterface::class, 10],
139
            [BeforeCreateLanguageEventInterface::class, 0],
140
            [CreateLanguageEventInterface::class, 0],
141
        ]);
142
        $this->assertSame([], $traceableEventDispatcher->getNotCalledListeners());
143
    }
144
145 View Code Duplication
    public function testCreateLanguageStopPropagationInBeforeEvents()
146
    {
147
        $traceableEventDispatcher = $this->getEventDispatcher(
148
            BeforeCreateLanguageEventInterface::class,
149
            CreateLanguageEventInterface::class
150
        );
151
152
        $parameters = [
153
            $this->createMock(LanguageCreateStruct::class),
154
        ];
155
156
        $language = $this->createMock(Language::class);
157
        $eventLanguage = $this->createMock(Language::class);
158
        $innerServiceMock = $this->createMock(LanguageServiceInterface::class);
159
        $innerServiceMock->method('createLanguage')->willReturn($language);
0 ignored issues
show
Bug introduced by
The method method() does not seem to exist on object<PHPUnit\Framework\MockObject\MockObject>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
160
161
        $traceableEventDispatcher->addListener(BeforeCreateLanguageEventInterface::class, function (BeforeCreateLanguageEventInterface $event) use ($eventLanguage) {
162
            $event->setLanguage($eventLanguage);
163
            $event->stopPropagation();
164
        }, 10);
165
166
        $service = new LanguageService($innerServiceMock, $traceableEventDispatcher);
167
        $result = $service->createLanguage(...$parameters);
168
169
        $calledListeners = $this->getListenersStack($traceableEventDispatcher->getCalledListeners());
170
        $notCalledListeners = $this->getListenersStack($traceableEventDispatcher->getNotCalledListeners());
171
172
        $this->assertSame($eventLanguage, $result);
173
        $this->assertSame($calledListeners, [
174
            [BeforeCreateLanguageEventInterface::class, 10],
175
        ]);
176
        $this->assertSame($notCalledListeners, [
177
            [BeforeCreateLanguageEventInterface::class, 0],
178
            [CreateLanguageEventInterface::class, 0],
179
        ]);
180
    }
181
182 View Code Duplication
    public function testUpdateLanguageNameEvents()
183
    {
184
        $traceableEventDispatcher = $this->getEventDispatcher(
185
            BeforeUpdateLanguageNameEventInterface::class,
186
            UpdateLanguageNameEventInterface::class
187
        );
188
189
        $parameters = [
190
            $this->createMock(Language::class),
191
            'random_value_5cff79c3161276.87987683',
192
        ];
193
194
        $updatedLanguage = $this->createMock(Language::class);
195
        $innerServiceMock = $this->createMock(LanguageServiceInterface::class);
196
        $innerServiceMock->method('updateLanguageName')->willReturn($updatedLanguage);
0 ignored issues
show
Bug introduced by
The method method() does not seem to exist on object<PHPUnit\Framework\MockObject\MockObject>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
197
198
        $service = new LanguageService($innerServiceMock, $traceableEventDispatcher);
199
        $result = $service->updateLanguageName(...$parameters);
0 ignored issues
show
Bug introduced by
The call to updateLanguageName() misses a required argument $newName.

This check looks for function calls that miss required arguments.

Loading history...
200
201
        $calledListeners = $this->getListenersStack($traceableEventDispatcher->getCalledListeners());
202
203
        $this->assertSame($updatedLanguage, $result);
204
        $this->assertSame($calledListeners, [
205
            [BeforeUpdateLanguageNameEventInterface::class, 0],
206
            [UpdateLanguageNameEventInterface::class, 0],
207
        ]);
208
        $this->assertSame([], $traceableEventDispatcher->getNotCalledListeners());
209
    }
210
211 View Code Duplication
    public function testReturnUpdateLanguageNameResultInBeforeEvents()
212
    {
213
        $traceableEventDispatcher = $this->getEventDispatcher(
214
            BeforeUpdateLanguageNameEventInterface::class,
215
            UpdateLanguageNameEventInterface::class
216
        );
217
218
        $parameters = [
219
            $this->createMock(Language::class),
220
            'random_value_5cff79c3161312.94068030',
221
        ];
222
223
        $updatedLanguage = $this->createMock(Language::class);
224
        $eventUpdatedLanguage = $this->createMock(Language::class);
225
        $innerServiceMock = $this->createMock(LanguageServiceInterface::class);
226
        $innerServiceMock->method('updateLanguageName')->willReturn($updatedLanguage);
0 ignored issues
show
Bug introduced by
The method method() does not seem to exist on object<PHPUnit\Framework\MockObject\MockObject>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
227
228
        $traceableEventDispatcher->addListener(BeforeUpdateLanguageNameEventInterface::class, function (BeforeUpdateLanguageNameEventInterface $event) use ($eventUpdatedLanguage) {
229
            $event->setUpdatedLanguage($eventUpdatedLanguage);
230
        }, 10);
231
232
        $service = new LanguageService($innerServiceMock, $traceableEventDispatcher);
233
        $result = $service->updateLanguageName(...$parameters);
0 ignored issues
show
Bug introduced by
The call to updateLanguageName() misses a required argument $newName.

This check looks for function calls that miss required arguments.

Loading history...
234
235
        $calledListeners = $this->getListenersStack($traceableEventDispatcher->getCalledListeners());
236
237
        $this->assertSame($eventUpdatedLanguage, $result);
238
        $this->assertSame($calledListeners, [
239
            [BeforeUpdateLanguageNameEventInterface::class, 10],
240
            [BeforeUpdateLanguageNameEventInterface::class, 0],
241
            [UpdateLanguageNameEventInterface::class, 0],
242
        ]);
243
        $this->assertSame([], $traceableEventDispatcher->getNotCalledListeners());
244
    }
245
246 View Code Duplication
    public function testUpdateLanguageNameStopPropagationInBeforeEvents()
247
    {
248
        $traceableEventDispatcher = $this->getEventDispatcher(
249
            BeforeUpdateLanguageNameEventInterface::class,
250
            UpdateLanguageNameEventInterface::class
251
        );
252
253
        $parameters = [
254
            $this->createMock(Language::class),
255
            'random_value_5cff79c3161386.01414999',
256
        ];
257
258
        $updatedLanguage = $this->createMock(Language::class);
259
        $eventUpdatedLanguage = $this->createMock(Language::class);
260
        $innerServiceMock = $this->createMock(LanguageServiceInterface::class);
261
        $innerServiceMock->method('updateLanguageName')->willReturn($updatedLanguage);
0 ignored issues
show
Bug introduced by
The method method() does not seem to exist on object<PHPUnit\Framework\MockObject\MockObject>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
262
263
        $traceableEventDispatcher->addListener(BeforeUpdateLanguageNameEventInterface::class, function (BeforeUpdateLanguageNameEventInterface $event) use ($eventUpdatedLanguage) {
264
            $event->setUpdatedLanguage($eventUpdatedLanguage);
265
            $event->stopPropagation();
266
        }, 10);
267
268
        $service = new LanguageService($innerServiceMock, $traceableEventDispatcher);
269
        $result = $service->updateLanguageName(...$parameters);
0 ignored issues
show
Bug introduced by
The call to updateLanguageName() misses a required argument $newName.

This check looks for function calls that miss required arguments.

Loading history...
270
271
        $calledListeners = $this->getListenersStack($traceableEventDispatcher->getCalledListeners());
272
        $notCalledListeners = $this->getListenersStack($traceableEventDispatcher->getNotCalledListeners());
273
274
        $this->assertSame($eventUpdatedLanguage, $result);
275
        $this->assertSame($calledListeners, [
276
            [BeforeUpdateLanguageNameEventInterface::class, 10],
277
        ]);
278
        $this->assertSame($notCalledListeners, [
279
            [BeforeUpdateLanguageNameEventInterface::class, 0],
280
            [UpdateLanguageNameEventInterface::class, 0],
281
        ]);
282
    }
283
284 View Code Duplication
    public function testDisableLanguageEvents()
285
    {
286
        $traceableEventDispatcher = $this->getEventDispatcher(
287
            BeforeDisableLanguageEventInterface::class,
288
            DisableLanguageEventInterface::class
289
        );
290
291
        $parameters = [
292
            $this->createMock(Language::class),
293
        ];
294
295
        $disabledLanguage = $this->createMock(Language::class);
296
        $innerServiceMock = $this->createMock(LanguageServiceInterface::class);
297
        $innerServiceMock->method('disableLanguage')->willReturn($disabledLanguage);
0 ignored issues
show
Bug introduced by
The method method() does not seem to exist on object<PHPUnit\Framework\MockObject\MockObject>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
298
299
        $service = new LanguageService($innerServiceMock, $traceableEventDispatcher);
300
        $result = $service->disableLanguage(...$parameters);
301
302
        $calledListeners = $this->getListenersStack($traceableEventDispatcher->getCalledListeners());
303
304
        $this->assertSame($disabledLanguage, $result);
305
        $this->assertSame($calledListeners, [
306
            [BeforeDisableLanguageEventInterface::class, 0],
307
            [DisableLanguageEventInterface::class, 0],
308
        ]);
309
        $this->assertSame([], $traceableEventDispatcher->getNotCalledListeners());
310
    }
311
312 View Code Duplication
    public function testReturnDisableLanguageResultInBeforeEvents()
313
    {
314
        $traceableEventDispatcher = $this->getEventDispatcher(
315
            BeforeDisableLanguageEventInterface::class,
316
            DisableLanguageEventInterface::class
317
        );
318
319
        $parameters = [
320
            $this->createMock(Language::class),
321
        ];
322
323
        $disabledLanguage = $this->createMock(Language::class);
324
        $eventDisabledLanguage = $this->createMock(Language::class);
325
        $innerServiceMock = $this->createMock(LanguageServiceInterface::class);
326
        $innerServiceMock->method('disableLanguage')->willReturn($disabledLanguage);
0 ignored issues
show
Bug introduced by
The method method() does not seem to exist on object<PHPUnit\Framework\MockObject\MockObject>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
327
328
        $traceableEventDispatcher->addListener(BeforeDisableLanguageEventInterface::class, function (BeforeDisableLanguageEventInterface $event) use ($eventDisabledLanguage) {
329
            $event->setDisabledLanguage($eventDisabledLanguage);
330
        }, 10);
331
332
        $service = new LanguageService($innerServiceMock, $traceableEventDispatcher);
333
        $result = $service->disableLanguage(...$parameters);
334
335
        $calledListeners = $this->getListenersStack($traceableEventDispatcher->getCalledListeners());
336
337
        $this->assertSame($eventDisabledLanguage, $result);
338
        $this->assertSame($calledListeners, [
339
            [BeforeDisableLanguageEventInterface::class, 10],
340
            [BeforeDisableLanguageEventInterface::class, 0],
341
            [DisableLanguageEventInterface::class, 0],
342
        ]);
343
        $this->assertSame([], $traceableEventDispatcher->getNotCalledListeners());
344
    }
345
346 View Code Duplication
    public function testDisableLanguageStopPropagationInBeforeEvents()
347
    {
348
        $traceableEventDispatcher = $this->getEventDispatcher(
349
            BeforeDisableLanguageEventInterface::class,
350
            DisableLanguageEventInterface::class
351
        );
352
353
        $parameters = [
354
            $this->createMock(Language::class),
355
        ];
356
357
        $disabledLanguage = $this->createMock(Language::class);
358
        $eventDisabledLanguage = $this->createMock(Language::class);
359
        $innerServiceMock = $this->createMock(LanguageServiceInterface::class);
360
        $innerServiceMock->method('disableLanguage')->willReturn($disabledLanguage);
0 ignored issues
show
Bug introduced by
The method method() does not seem to exist on object<PHPUnit\Framework\MockObject\MockObject>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
361
362
        $traceableEventDispatcher->addListener(BeforeDisableLanguageEventInterface::class, function (BeforeDisableLanguageEventInterface $event) use ($eventDisabledLanguage) {
363
            $event->setDisabledLanguage($eventDisabledLanguage);
364
            $event->stopPropagation();
365
        }, 10);
366
367
        $service = new LanguageService($innerServiceMock, $traceableEventDispatcher);
368
        $result = $service->disableLanguage(...$parameters);
369
370
        $calledListeners = $this->getListenersStack($traceableEventDispatcher->getCalledListeners());
371
        $notCalledListeners = $this->getListenersStack($traceableEventDispatcher->getNotCalledListeners());
372
373
        $this->assertSame($eventDisabledLanguage, $result);
374
        $this->assertSame($calledListeners, [
375
            [BeforeDisableLanguageEventInterface::class, 10],
376
        ]);
377
        $this->assertSame($notCalledListeners, [
378
            [BeforeDisableLanguageEventInterface::class, 0],
379
            [DisableLanguageEventInterface::class, 0],
380
        ]);
381
    }
382
383 View Code Duplication
    public function testEnableLanguageEvents()
384
    {
385
        $traceableEventDispatcher = $this->getEventDispatcher(
386
            BeforeEnableLanguageEventInterface::class,
387
            EnableLanguageEventInterface::class
388
        );
389
390
        $parameters = [
391
            $this->createMock(Language::class),
392
        ];
393
394
        $enabledLanguage = $this->createMock(Language::class);
395
        $innerServiceMock = $this->createMock(LanguageServiceInterface::class);
396
        $innerServiceMock->method('enableLanguage')->willReturn($enabledLanguage);
0 ignored issues
show
Bug introduced by
The method method() does not seem to exist on object<PHPUnit\Framework\MockObject\MockObject>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
397
398
        $service = new LanguageService($innerServiceMock, $traceableEventDispatcher);
399
        $result = $service->enableLanguage(...$parameters);
400
401
        $calledListeners = $this->getListenersStack($traceableEventDispatcher->getCalledListeners());
402
403
        $this->assertSame($enabledLanguage, $result);
404
        $this->assertSame($calledListeners, [
405
            [BeforeEnableLanguageEventInterface::class, 0],
406
            [EnableLanguageEventInterface::class, 0],
407
        ]);
408
        $this->assertSame([], $traceableEventDispatcher->getNotCalledListeners());
409
    }
410
411 View Code Duplication
    public function testReturnEnableLanguageResultInBeforeEvents()
412
    {
413
        $traceableEventDispatcher = $this->getEventDispatcher(
414
            BeforeEnableLanguageEventInterface::class,
415
            EnableLanguageEventInterface::class
416
        );
417
418
        $parameters = [
419
            $this->createMock(Language::class),
420
        ];
421
422
        $enabledLanguage = $this->createMock(Language::class);
423
        $eventEnabledLanguage = $this->createMock(Language::class);
424
        $innerServiceMock = $this->createMock(LanguageServiceInterface::class);
425
        $innerServiceMock->method('enableLanguage')->willReturn($enabledLanguage);
0 ignored issues
show
Bug introduced by
The method method() does not seem to exist on object<PHPUnit\Framework\MockObject\MockObject>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
426
427
        $traceableEventDispatcher->addListener(BeforeEnableLanguageEventInterface::class, function (BeforeEnableLanguageEventInterface $event) use ($eventEnabledLanguage) {
428
            $event->setEnabledLanguage($eventEnabledLanguage);
429
        }, 10);
430
431
        $service = new LanguageService($innerServiceMock, $traceableEventDispatcher);
432
        $result = $service->enableLanguage(...$parameters);
433
434
        $calledListeners = $this->getListenersStack($traceableEventDispatcher->getCalledListeners());
435
436
        $this->assertSame($eventEnabledLanguage, $result);
437
        $this->assertSame($calledListeners, [
438
            [BeforeEnableLanguageEventInterface::class, 10],
439
            [BeforeEnableLanguageEventInterface::class, 0],
440
            [EnableLanguageEventInterface::class, 0],
441
        ]);
442
        $this->assertSame([], $traceableEventDispatcher->getNotCalledListeners());
443
    }
444
445 View Code Duplication
    public function testEnableLanguageStopPropagationInBeforeEvents()
446
    {
447
        $traceableEventDispatcher = $this->getEventDispatcher(
448
            BeforeEnableLanguageEventInterface::class,
449
            EnableLanguageEventInterface::class
450
        );
451
452
        $parameters = [
453
            $this->createMock(Language::class),
454
        ];
455
456
        $enabledLanguage = $this->createMock(Language::class);
457
        $eventEnabledLanguage = $this->createMock(Language::class);
458
        $innerServiceMock = $this->createMock(LanguageServiceInterface::class);
459
        $innerServiceMock->method('enableLanguage')->willReturn($enabledLanguage);
0 ignored issues
show
Bug introduced by
The method method() does not seem to exist on object<PHPUnit\Framework\MockObject\MockObject>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
460
461
        $traceableEventDispatcher->addListener(BeforeEnableLanguageEventInterface::class, function (BeforeEnableLanguageEventInterface $event) use ($eventEnabledLanguage) {
462
            $event->setEnabledLanguage($eventEnabledLanguage);
463
            $event->stopPropagation();
464
        }, 10);
465
466
        $service = new LanguageService($innerServiceMock, $traceableEventDispatcher);
467
        $result = $service->enableLanguage(...$parameters);
468
469
        $calledListeners = $this->getListenersStack($traceableEventDispatcher->getCalledListeners());
470
        $notCalledListeners = $this->getListenersStack($traceableEventDispatcher->getNotCalledListeners());
471
472
        $this->assertSame($eventEnabledLanguage, $result);
473
        $this->assertSame($calledListeners, [
474
            [BeforeEnableLanguageEventInterface::class, 10],
475
        ]);
476
        $this->assertSame($notCalledListeners, [
477
            [BeforeEnableLanguageEventInterface::class, 0],
478
            [EnableLanguageEventInterface::class, 0],
479
        ]);
480
    }
481
}
482