From 4f845bdbf9f7af70fba42923b23733a9cb39bc77 Mon Sep 17 00:00:00 2001 From: Keith Solomon Date: Sun, 26 Apr 2026 15:00:36 -0500 Subject: [PATCH] feat: register url transformation services --- src/Plugin.php | 18 ++++++++++++++++++ tests/Unit/PluginTest.php | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 tests/Unit/PluginTest.php diff --git a/src/Plugin.php b/src/Plugin.php index 36c9e4e..4b1838a 100644 --- a/src/Plugin.php +++ b/src/Plugin.php @@ -11,6 +11,8 @@ use WPContentSync\Admin\AdminPage; use WPContentSync\Logging\LoggerInterface; use WPContentSync\Logging\OptionLogger; use WPContentSync\Settings\SettingsRepository; +use WPContentSync\Url\MetadataUrlTransformer; +use WPContentSync\Url\UrlTransformer; final class Plugin { private Container $container; @@ -36,6 +38,22 @@ final class Plugin { } ); + $container->factory( + UrlTransformer::class, + static function (): UrlTransformer { + return new UrlTransformer(); + } + ); + + $container->factory( + MetadataUrlTransformer::class, + static function () use ( $container ): MetadataUrlTransformer { + return new MetadataUrlTransformer( + $container->get( UrlTransformer::class ) + ); + } + ); + $container->factory( AdminPage::class, static function () use ( $container ): AdminPage { diff --git a/tests/Unit/PluginTest.php b/tests/Unit/PluginTest.php new file mode 100644 index 0000000..9c5a1e5 --- /dev/null +++ b/tests/Unit/PluginTest.php @@ -0,0 +1,34 @@ +getPluginContainer( Plugin::create() ); + + $url_transformer = $container->get( UrlTransformer::class ); + $metadata_transformer = $container->get( MetadataUrlTransformer::class ); + + self::assertInstanceOf( UrlTransformer::class, $url_transformer ); + self::assertInstanceOf( MetadataUrlTransformer::class, $metadata_transformer ); + self::assertSame( $url_transformer, $container->get( UrlTransformer::class ) ); + self::assertSame( $metadata_transformer, $container->get( MetadataUrlTransformer::class ) ); + } + + private function getPluginContainer( Plugin $plugin ): Container { + $reflection = new \ReflectionClass( $plugin ); + $property = $reflection->getProperty( 'container' ); + $property->setAccessible( true ); + + /** @var Container $container */ + $container = $property->getValue( $plugin ); + + return $container; + } +}