/
githubmirror
/
framework
Обзор
Документация
Войти
/
githubmirror
/
framework
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
13.x
tests/Integration/Foundation/DiscoverEventsTest.php
127 строк
5 KB
Jack Bayliss
[13.x] Allow auto discovered listeners to opt out of discovery (#60209)
21 май 2026, 16:18
Не верифицирован
21 май 2026, 16:18
b96539c
Код
Авторство
О чём код?
<?php namespace Illuminate\Tests\Integration\Foundation; use Illuminate\Foundation\Events\DiscoverEvents; use Illuminate\Support\Stringable; 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\ShouldBeDiscoveredListeners\RegisteredListener; use Illuminate\Tests\Integration\Foundation\Fixtures\EventDiscovery\ShouldBeDiscoveredListeners\SkippedListener; 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 testMultipleDirectoriesCanBeDiscovered(): void { $events = DiscoverEvents::within([ __DIR__.'/Fixtures/EventDiscovery/Listeners', __DIR__.'/Fixtures/EventDiscovery/UnionListeners', ], getcwd()); $this->assertEquals([ EventOne::class => [ Listener::class.'@handle', Listener::class.'@handleEventOne', UnionListener::class.'@handle', ], EventTwo::class => [ Listener::class.'@handleEventTwo', UnionListener::class.'@handle', ], ], $events); } public function testListenersCanOptOutOfDiscovery() { class_alias(RegisteredListener::class, 'Tests\Integration\Foundation\Fixtures\EventDiscovery\ShouldBeDiscoveredListeners\RegisteredListener'); class_alias(SkippedListener::class, 'Tests\Integration\Foundation\Fixtures\EventDiscovery\ShouldBeDiscoveredListeners\SkippedListener'); $events = DiscoverEvents::within(__DIR__.'/Fixtures/EventDiscovery/ShouldBeDiscoveredListeners', getcwd()); $this->assertEquals([ EventOne::class => [ RegisteredListener::class.'@handle', ], ], $events); } public function testNoExceptionForEmptyDirectories(): void { $events = DiscoverEvents::within([], getcwd()); $this->assertSame([], $events); } public function testEventsCanBeDiscoveredUsingCustomClassNameGuessing() { DiscoverEvents::guessClassNamesUsing(function (SplFileInfo $file, $basePath) { return (new Stringable($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); } }