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 ) ); } public function test_it_registers_file_transport_services(): void { $container = $this->getPluginContainer( Plugin::create() ); self::assertInstanceOf( FileTransportInterface::class, $container->get( FileTransportInterface::class ) ); self::assertInstanceOf( FileImportController::class, $container->get( FileImportController::class ) ); } public function test_it_registers_rest_transport_services(): void { $container = $this->getPluginContainer( Plugin::create() ); self::assertInstanceOf( RestTransportClient::class, $container->get( RestTransportClient::class ) ); self::assertInstanceOf( RestPackageController::class, $container->get( RestPackageController::class ) ); } public function test_it_hooks_rest_package_controller_on_register(): void { unset( $GLOBALS['wpcs_test_actions'] ); $plugin = Plugin::create(); $plugin->register(); self::assertArrayHasKey( 'rest_api_init', $GLOBALS['wpcs_test_actions'] ); } 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; } }