55 lines
1.6 KiB
PHP
55 lines
1.6 KiB
PHP
<?php
|
|
/**
|
|
* Tests for content handler registry.
|
|
*
|
|
* @package WPContentSync
|
|
*/
|
|
|
|
namespace WPContentSync\Tests\Unit\Content;
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
use WPContentSync\Content\ContentHandlerInterface;
|
|
use WPContentSync\Content\ContentHandlerRegistry;
|
|
use WPContentSync\Sync\SyncContext;
|
|
use WPContentSync\Sync\SyncResult;
|
|
|
|
class ContentHandlerRegistryTest extends TestCase {
|
|
public function test_it_returns_handlers_in_package_order(): void {
|
|
$posts = $this->handler( 'posts' );
|
|
$terms = $this->handler( 'terms' );
|
|
$media = $this->handler( 'media' );
|
|
|
|
$registry = new ContentHandlerRegistry( array( $media, $posts, $terms ) );
|
|
|
|
self::assertSame( array( $terms, $posts, $media ), $registry->ordered() );
|
|
}
|
|
|
|
public function test_it_rejects_duplicate_buckets(): void {
|
|
$this->expectException( \InvalidArgumentException::class );
|
|
$this->expectExceptionMessage( 'Handler bucket "posts" is already registered.' );
|
|
|
|
new ContentHandlerRegistry( array( $this->handler( 'posts' ), $this->handler( 'posts' ) ) );
|
|
}
|
|
|
|
private function handler( string $bucket ): ContentHandlerInterface {
|
|
return new class( $bucket ) implements ContentHandlerInterface {
|
|
private string $bucket;
|
|
|
|
public function __construct( string $bucket ) {
|
|
$this->bucket = $bucket;
|
|
}
|
|
|
|
public function bucket(): string {
|
|
return $this->bucket;
|
|
}
|
|
|
|
/**
|
|
* @param array<int, array<string, mixed>> $records Package records.
|
|
*/
|
|
public function importRecords( array $records, SyncContext $context ): SyncResult {
|
|
return SyncResult::success( array( 'skipped' => count( $records ) ) );
|
|
}
|
|
};
|
|
}
|
|
}
|