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

BookmarkServiceTest   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 116
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Importance

Changes 0
Metric Value
dl 0
loc 116
c 0
b 0
f 0
rs 10
wmc 4
lcom 1
cbo 5

4 Methods

Rating   Name   Duplication   Size   Complexity  
A testCreateBookmarkEvents() 0 24 1
A testCreateBookmarkStopPropagationInBeforeEvents() 0 31 1
A testDeleteBookmarkEvents() 0 24 1
A testDeleteBookmarkStopPropagationInBeforeEvents() 0 31 1
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\BookmarkService as BookmarkServiceInterface;
10
use eZ\Publish\API\Repository\Events\Bookmark\BeforeCreateBookmarkEvent as BeforeCreateBookmarkEventInterface;
11
use eZ\Publish\API\Repository\Events\Bookmark\BeforeDeleteBookmarkEvent as BeforeDeleteBookmarkEventInterface;
12
use eZ\Publish\API\Repository\Events\Bookmark\CreateBookmarkEvent as CreateBookmarkEventInterface;
13
use eZ\Publish\API\Repository\Events\Bookmark\DeleteBookmarkEvent as DeleteBookmarkEventInterface;
14
use eZ\Publish\API\Repository\Values\Content\Location;
15
use eZ\Publish\Core\Event\BookmarkService;
16
17
class BookmarkServiceTest extends AbstractServiceTest
18
{
19
    public function testCreateBookmarkEvents()
20
    {
21
        $traceableEventDispatcher = $this->getEventDispatcher(
22
            BeforeCreateBookmarkEventInterface::class,
23
            CreateBookmarkEventInterface::class
24
        );
25
26
        $parameters = [
27
            $this->createMock(Location::class),
28
        ];
29
30
        $innerServiceMock = $this->createMock(BookmarkServiceInterface::class);
31
32
        $service = new BookmarkService($innerServiceMock, $traceableEventDispatcher);
33
        $service->createBookmark(...$parameters);
34
35
        $calledListeners = $this->getListenersStack($traceableEventDispatcher->getCalledListeners());
36
37
        $this->assertSame($calledListeners, [
38
            [BeforeCreateBookmarkEventInterface::class, 0],
39
            [CreateBookmarkEventInterface::class, 0],
40
        ]);
41
        $this->assertSame([], $traceableEventDispatcher->getNotCalledListeners());
42
    }
43
44
    public function testCreateBookmarkStopPropagationInBeforeEvents()
45
    {
46
        $traceableEventDispatcher = $this->getEventDispatcher(
47
            BeforeCreateBookmarkEventInterface::class,
48
            CreateBookmarkEventInterface::class
49
        );
50
51
        $parameters = [
52
            $this->createMock(Location::class),
53
        ];
54
55
        $innerServiceMock = $this->createMock(BookmarkServiceInterface::class);
56
57
        $traceableEventDispatcher->addListener(BeforeCreateBookmarkEventInterface::class, function (BeforeCreateBookmarkEventInterface $event) {
58
            $event->stopPropagation();
59
        }, 10);
60
61
        $service = new BookmarkService($innerServiceMock, $traceableEventDispatcher);
62
        $service->createBookmark(...$parameters);
63
64
        $calledListeners = $this->getListenersStack($traceableEventDispatcher->getCalledListeners());
65
        $notCalledListeners = $this->getListenersStack($traceableEventDispatcher->getNotCalledListeners());
66
67
        $this->assertSame($calledListeners, [
68
            [BeforeCreateBookmarkEventInterface::class, 10],
69
        ]);
70
        $this->assertSame($notCalledListeners, [
71
            [BeforeCreateBookmarkEventInterface::class, 0],
72
            [CreateBookmarkEventInterface::class, 0],
73
        ]);
74
    }
75
76
    public function testDeleteBookmarkEvents()
77
    {
78
        $traceableEventDispatcher = $this->getEventDispatcher(
79
            BeforeDeleteBookmarkEventInterface::class,
80
            DeleteBookmarkEventInterface::class
81
        );
82
83
        $parameters = [
84
            $this->createMock(Location::class),
85
        ];
86
87
        $innerServiceMock = $this->createMock(BookmarkServiceInterface::class);
88
89
        $service = new BookmarkService($innerServiceMock, $traceableEventDispatcher);
90
        $service->deleteBookmark(...$parameters);
91
92
        $calledListeners = $this->getListenersStack($traceableEventDispatcher->getCalledListeners());
93
94
        $this->assertSame($calledListeners, [
95
            [BeforeDeleteBookmarkEventInterface::class, 0],
96
            [DeleteBookmarkEventInterface::class, 0],
97
        ]);
98
        $this->assertSame([], $traceableEventDispatcher->getNotCalledListeners());
99
    }
100
101
    public function testDeleteBookmarkStopPropagationInBeforeEvents()
102
    {
103
        $traceableEventDispatcher = $this->getEventDispatcher(
104
            BeforeDeleteBookmarkEventInterface::class,
105
            DeleteBookmarkEventInterface::class
106
        );
107
108
        $parameters = [
109
            $this->createMock(Location::class),
110
        ];
111
112
        $innerServiceMock = $this->createMock(BookmarkServiceInterface::class);
113
114
        $traceableEventDispatcher->addListener(BeforeDeleteBookmarkEventInterface::class, function (BeforeDeleteBookmarkEventInterface $event) {
115
            $event->stopPropagation();
116
        }, 10);
117
118
        $service = new BookmarkService($innerServiceMock, $traceableEventDispatcher);
119
        $service->deleteBookmark(...$parameters);
120
121
        $calledListeners = $this->getListenersStack($traceableEventDispatcher->getCalledListeners());
122
        $notCalledListeners = $this->getListenersStack($traceableEventDispatcher->getNotCalledListeners());
123
124
        $this->assertSame($calledListeners, [
125
            [BeforeDeleteBookmarkEventInterface::class, 10],
126
        ]);
127
        $this->assertSame($notCalledListeners, [
128
            [BeforeDeleteBookmarkEventInterface::class, 0],
129
            [DeleteBookmarkEventInterface::class, 0],
130
        ]);
131
    }
132
}
133