Passed
Push — 26-use-psr-14-event-dispatcher ( ab95da )
by Jakub
02:36
created

TesterListenerProviderTest   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 42
Duplicated Lines 0 %

Test Coverage

Coverage 92.31%

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 26
c 1
b 0
f 1
dl 0
loc 42
ccs 24
cts 26
cp 0.9231
rs 10
wmc 3

4 Methods

Rating   Name   Duplication   Size   Complexity  
A hp$0 ➔ testGetListenersForEvent() 0 39 1
A hp$0 ➔ getEventsAfterRun() 0 3 1
A hp$0 ➔ getEventsPreRun() 0 3 1
testGetListenersForEvent() 0 39 ?
1
<?php
2
declare(strict_types=1);
3
4
namespace MyTester;
5
6
use MyTester\Attributes\TestSuite;
7
8
/**
9
 * Test suite for class TesterListenerProvider
10
 *
11
 * @author Jakub Konečný
12
 */
13
#[TestSuite("TesterListenerProvider")]
14
final class TesterListenerProviderTest extends TestCase
15
{
16
    public function testGetListenersForEvent(): void
17
    {
18 1
        $listenerProvider = new TesterListenerProvider([]);
19 1
        $this->assertSame([], $listenerProvider->getListenersForEvent(new Events\TestsStartedEvent([])));
20 1
        $this->assertSame([], $listenerProvider->getListenersForEvent(new Events\TestsFinishedEvent([])));
21 1
        $this->assertSame([], $listenerProvider->getListenersForEvent(new \stdClass()));
22
23 1
        $extensions = [
24 1
            new class implements ITesterExtension
25
            {
26
                public function getEventsPreRun(): array
27
                {
28 1
                    return ["time", ];
29
                }
30
31
                public function getEventsAfterRun(): array
32
                {
33 1
                    return ["pi", ];
34
                }
35
            }
36
        ];
37 1
        $listenerProvider = new TesterListenerProvider($extensions);
38 1
        $this->assertSame(["time", ], $listenerProvider->getListenersForEvent(new Events\TestsStartedEvent([])));
39 1
        $this->assertSame(["pi", ], $listenerProvider->getListenersForEvent(new Events\TestsFinishedEvent([])));
40 1
        $this->assertSame([], $listenerProvider->getListenersForEvent(new \stdClass()));
41
42 1
        $listenerProvider = new TesterListenerProvider([]);
43 1
        $listenerProvider->registerListener(Events\TestsStartedEvent::class, "time");
44 1
        $listenerProvider->registerListener(Events\TestsFinishedEvent::class, "pi");
45 1
        $this->assertSame(["time", ], $listenerProvider->getListenersForEvent(new Events\TestsStartedEvent([])));
46 1
        $this->assertSame(["pi", ], $listenerProvider->getListenersForEvent(new Events\TestsFinishedEvent([])));
47 1
        $this->assertSame([], $listenerProvider->getListenersForEvent(new \stdClass()));
48
49 1
        $listenerProvider = new TesterListenerProvider($extensions);
50 1
        $listenerProvider->registerListener(Events\TestsStartedEvent::class, "pi");
51 1
        $listenerProvider->registerListener(Events\TestsFinishedEvent::class, "time");
52 1
        $this->assertSame(["pi", "time", ], $listenerProvider->getListenersForEvent(new Events\TestsStartedEvent([])));
53 1
        $this->assertSame(["time", "pi", ], $listenerProvider->getListenersForEvent(new Events\TestsFinishedEvent([])));
54 1
        $this->assertSame([], $listenerProvider->getListenersForEvent(new \stdClass()));
55 1
    }
56
}
57