Files
WP-Content-Sync/tests/Unit/PluginTest.php
2026-04-28 13:04:39 -05:00

80 lines
2.4 KiB
PHP

<?php
namespace WPContentSync\Tests\Unit;
use PHPUnit\Framework\TestCase;
use WPContentSync\Admin\FileImportController;
use WPContentSync\Container;
use WPContentSync\Plugin;
use WPContentSync\Rest\RestPackageController;
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_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;
}
}