99 lines
3.6 KiB
PHP
99 lines
3.6 KiB
PHP
<?php
|
|
|
|
namespace WPContentSync\Tests\Unit;
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
use WPContentSync\Admin\FileImportController;
|
|
use WPContentSync\Content\ContentHandlerRegistry;
|
|
use WPContentSync\Content\ContentRecordNormalizer;
|
|
use WPContentSync\Content\MediaContentHandler;
|
|
use WPContentSync\Content\PostContentHandler;
|
|
use WPContentSync\Content\TermContentHandler;
|
|
use WPContentSync\Container;
|
|
use WPContentSync\Plugin;
|
|
use WPContentSync\Rest\RestPackageController;
|
|
use WPContentSync\Sync\SyncEngine;
|
|
use WPContentSync\Sync\SyncStateRepository;
|
|
use WPContentSync\Transport\FileTransportInterface;
|
|
use WPContentSync\Transport\RestTransportClient;
|
|
use WPContentSync\Url\MetadataUrlTransformer;
|
|
use WPContentSync\Url\UrlTransformer;
|
|
|
|
class PluginTest extends TestCase {
|
|
protected function tearDown(): void {
|
|
unset( $GLOBALS['wpcs_test_actions'] );
|
|
|
|
parent::tearDown();
|
|
}
|
|
|
|
public function test_it_registers_url_transformation_services(): void {
|
|
$container = $this->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_registers_sync_engine_and_content_handlers(): void {
|
|
$container = $this->getPluginContainer( Plugin::create() );
|
|
|
|
self::assertInstanceOf( ContentRecordNormalizer::class, $container->get( ContentRecordNormalizer::class ) );
|
|
self::assertInstanceOf( PostContentHandler::class, $container->get( PostContentHandler::class ) );
|
|
self::assertInstanceOf( TermContentHandler::class, $container->get( TermContentHandler::class ) );
|
|
self::assertInstanceOf( MediaContentHandler::class, $container->get( MediaContentHandler::class ) );
|
|
self::assertInstanceOf( ContentHandlerRegistry::class, $container->get( ContentHandlerRegistry::class ) );
|
|
self::assertInstanceOf( SyncStateRepository::class, $container->get( SyncStateRepository::class ) );
|
|
self::assertInstanceOf( SyncEngine::class, $container->get( SyncEngine::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;
|
|
}
|
|
}
|