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

Run()   A

Complexity

Conditions 1

Size

Total Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 1
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 1
c 1
b 0
f 1
dl 0
loc 3
ccs 1
cts 1
cp 1
crap 1
rs 10
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