/
DiscoverEventsTest.php
84 lines (71 loc) · 3.09 KB
/
DiscoverEventsTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<?php
namespace Illuminate\Tests\Integration\Foundation;
use Illuminate\Foundation\Events\DiscoverEvents;
use Illuminate\Support\Str;
use Illuminate\Tests\Integration\Foundation\Fixtures\EventDiscovery\Events\EventOne;
use Illuminate\Tests\Integration\Foundation\Fixtures\EventDiscovery\Events\EventTwo;
use Illuminate\Tests\Integration\Foundation\Fixtures\EventDiscovery\Listeners\AbstractListener;
use Illuminate\Tests\Integration\Foundation\Fixtures\EventDiscovery\Listeners\Listener;
use Illuminate\Tests\Integration\Foundation\Fixtures\EventDiscovery\Listeners\ListenerInterface;
use Illuminate\Tests\Integration\Foundation\Fixtures\EventDiscovery\UnionListeners\UnionListener;
use Orchestra\Testbench\TestCase;
use SplFileInfo;
class DiscoverEventsTest extends TestCase
{
protected function tearDown(): void
{
DiscoverEvents::$guessClassNamesUsingCallback = null;
parent::tearDown();
}
public function testEventsCanBeDiscovered()
{
class_alias(Listener::class, 'Tests\Integration\Foundation\Fixtures\EventDiscovery\Listeners\Listener');
class_alias(AbstractListener::class, 'Tests\Integration\Foundation\Fixtures\EventDiscovery\Listeners\AbstractListener');
class_alias(ListenerInterface::class, 'Tests\Integration\Foundation\Fixtures\EventDiscovery\Listeners\ListenerInterface');
$events = DiscoverEvents::within(__DIR__.'/Fixtures/EventDiscovery/Listeners', getcwd());
$this->assertEquals([
EventOne::class => [
Listener::class.'@handle',
Listener::class.'@handleEventOne',
],
EventTwo::class => [
Listener::class.'@handleEventTwo',
],
], $events);
}
public function testUnionEventsCanBeDiscovered()
{
class_alias(UnionListener::class, 'Tests\Integration\Foundation\Fixtures\EventDiscovery\UnionListeners\UnionListener');
$events = DiscoverEvents::within(__DIR__.'/Fixtures/EventDiscovery/UnionListeners', getcwd());
$this->assertEquals([
EventOne::class => [
UnionListener::class.'@handle',
],
EventTwo::class => [
UnionListener::class.'@handle',
],
], $events);
}
public function testEventsCanBeDiscoveredUsingCustomClassNameGuessing()
{
DiscoverEvents::guessClassNamesUsing(function (SplFileInfo $file, $basePath) {
return Str::of($file->getRealPath())
->after($basePath.DIRECTORY_SEPARATOR)
->before('.php')
->replace(DIRECTORY_SEPARATOR, '\\')
->ucfirst()
->prepend('Illuminate\\')
->toString();
});
$events = DiscoverEvents::within(__DIR__.'/Fixtures/EventDiscovery/Listeners', getcwd());
$this->assertEquals([
EventOne::class => [
Listener::class.'@handle',
Listener::class.'@handleEventOne',
],
EventTwo::class => [
Listener::class.'@handleEventTwo',
],
], $events);
}
}