From 8cd3fda8570d2c06b2804fa0fa96ea03dcb95c8c Mon Sep 17 00:00:00 2001 From: Art4 Date: Wed, 1 Jan 2025 07:31:44 +0000 Subject: [PATCH] Create basic Event class, create NamedEvent interface --- src/Event/Event.php | 33 +++++++++++++++++++ src/Event/HtmlFilterEvent.php | 2 +- src/Event/NamedEvent.php | 21 ++---------- src/EventSubscriber/HookEventBridge.php | 5 +-- .../{NamedEventTest.php => EventTest.php} | 14 ++++++-- tests/Unit/Event/HtmlFilterEventTest.php | 8 +++++ .../EventSubscriber/HookEventBridgeTest.php | 8 ++--- 7 files changed, 63 insertions(+), 28 deletions(-) create mode 100644 src/Event/Event.php rename tests/Unit/Event/{NamedEventTest.php => EventTest.php} (70%) diff --git a/src/Event/Event.php b/src/Event/Event.php new file mode 100644 index 0000000000..248b310b78 --- /dev/null +++ b/src/Event/Event.php @@ -0,0 +1,33 @@ +name = $name; + } + + public function getName(): string + { + return $this->name; + } +} diff --git a/src/Event/HtmlFilterEvent.php b/src/Event/HtmlFilterEvent.php index 12df8f78b8..d8b7b742b8 100644 --- a/src/Event/HtmlFilterEvent.php +++ b/src/Event/HtmlFilterEvent.php @@ -12,7 +12,7 @@ namespace Friendica\Event; /** * Allow Event listener to modify HTML. */ -final class HtmlFilterEvent +final class HtmlFilterEvent implements NamedEvent { public const HEAD = 'friendica.html.head'; diff --git a/src/Event/NamedEvent.php b/src/Event/NamedEvent.php index 77dd8f7db7..424649664c 100644 --- a/src/Event/NamedEvent.php +++ b/src/Event/NamedEvent.php @@ -10,24 +10,9 @@ declare(strict_types=1); namespace Friendica\Event; /** - * One-way Event to inform listener about something happend. + * Interface for named events. */ -final class NamedEvent +interface NamedEvent { - /** - * Friendica is initialized. - */ - public const INIT = 'friendica.init'; - - private string $name; - - public function __construct(string $name) - { - $this->name = $name; - } - - public function getName(): string - { - return $this->name; - } + public function getName(): string; } diff --git a/src/EventSubscriber/HookEventBridge.php b/src/EventSubscriber/HookEventBridge.php index d2217b7cb0..6e5d2964c9 100644 --- a/src/EventSubscriber/HookEventBridge.php +++ b/src/EventSubscriber/HookEventBridge.php @@ -10,6 +10,7 @@ declare(strict_types=1); namespace Friendica\EventSubscriber; use Friendica\Core\Hook; +use Friendica\Event\Event; use Friendica\Event\HtmlFilterEvent; use Friendica\Event\NamedEvent; @@ -29,7 +30,7 @@ final class HookEventBridge implements StaticEventSubscriber * This maps the new event names to the legacy Hook names. */ private static array $eventMapper = [ - NamedEvent::INIT => 'init_1', + Event::INIT => 'init_1', HtmlFilterEvent::HEAD => 'head', HtmlFilterEvent::FOOTER => 'footer', HtmlFilterEvent::PAGE_CONTENT_TOP => 'page_content_top', @@ -42,7 +43,7 @@ final class HookEventBridge implements StaticEventSubscriber public static function getStaticSubscribedEvents(): array { return [ - NamedEvent::class => 'onNamedEvent', + Event::class => 'onNamedEvent', HtmlFilterEvent::class => 'onHtmlFilterEvent', ]; } diff --git a/tests/Unit/Event/NamedEventTest.php b/tests/Unit/Event/EventTest.php similarity index 70% rename from tests/Unit/Event/NamedEventTest.php rename to tests/Unit/Event/EventTest.php index 5ae8cbc6ce..8d7f882451 100644 --- a/tests/Unit/Event/NamedEventTest.php +++ b/tests/Unit/Event/EventTest.php @@ -9,15 +9,23 @@ declare(strict_types=1); namespace Friendica\Test\Unit\Event; +use Friendica\Event\Event; use Friendica\Event\NamedEvent; use PHPUnit\Framework\TestCase; -class NamedEventTest extends TestCase +class EventTest extends TestCase { + public function testImplementationOfInstances(): void + { + $event = new Event('test'); + + $this->assertInstanceOf(NamedEvent::class, $event); + } + public static function getPublicConstants(): array { return [ - [NamedEvent::INIT, 'friendica.init'], + [Event::INIT, 'friendica.init'], ]; } @@ -31,7 +39,7 @@ class NamedEventTest extends TestCase public function testGetNameReturnsName(): void { - $event = new NamedEvent('test'); + $event = new Event('test'); $this->assertSame('test', $event->getName()); } diff --git a/tests/Unit/Event/HtmlFilterEventTest.php b/tests/Unit/Event/HtmlFilterEventTest.php index 819aef6e45..ae1d27a5ad 100644 --- a/tests/Unit/Event/HtmlFilterEventTest.php +++ b/tests/Unit/Event/HtmlFilterEventTest.php @@ -10,10 +10,18 @@ declare(strict_types=1); namespace Friendica\Test\Unit\Event; use Friendica\Event\HtmlFilterEvent; +use Friendica\Event\NamedEvent; use PHPUnit\Framework\TestCase; class HtmlFilterEventTest extends TestCase { + public function testImplementationOfInstances(): void + { + $event = new HtmlFilterEvent('test', 'original'); + + $this->assertInstanceOf(NamedEvent::class, $event); + } + public static function getPublicConstants(): array { return [ diff --git a/tests/Unit/EventSubscriber/HookEventBridgeTest.php b/tests/Unit/EventSubscriber/HookEventBridgeTest.php index 8d868051e8..7b171f78af 100644 --- a/tests/Unit/EventSubscriber/HookEventBridgeTest.php +++ b/tests/Unit/EventSubscriber/HookEventBridgeTest.php @@ -9,8 +9,8 @@ declare(strict_types=1); namespace Friendica\Test\Unit\EventSubscriber; +use Friendica\Event\Event; use Friendica\Event\HtmlFilterEvent; -use Friendica\Event\NamedEvent; use Friendica\EventSubscriber\HookEventBridge; use Friendica\EventSubscriber\StaticEventSubscriber; use PHPUnit\Framework\TestCase; @@ -28,7 +28,7 @@ class HookEventBridgeTest extends TestCase public function testGetStaticSubscribedEventsReturnsStaticMethods(): void { $expected = [ - NamedEvent::class => 'onNamedEvent', + Event::class => 'onNamedEvent', HtmlFilterEvent::class => 'onHtmlFilterEvent', ]; @@ -54,7 +54,7 @@ class HookEventBridgeTest extends TestCase { return [ ['test', 'test'], - [NamedEvent::INIT, 'init_1'], + [Event::INIT, 'init_1'], ]; } @@ -63,7 +63,7 @@ class HookEventBridgeTest extends TestCase */ public function testOnNamedEventCallsHook($name, $expected): void { - $event = new NamedEvent($name); + $event = new Event($name); $reflectionProperty = new \ReflectionProperty(HookEventBridge::class, 'mockedCallHook'); $reflectionProperty->setAccessible(true);