2.1 KiB
2.1 KiB
<?php declare(strict_types=1);
use Kreuzberg\Kreuzberg;
use PHPUnit\Framework\TestCase;
class CustomPluginTest extends TestCase {
private object $plugin;
private object $mockResult;
private object $mockConfig;
protected function setUp(): void {
// Create mock extraction result
$this->mockResult = (object)[
'content' => 'Test content with some words',
'mime_type' => 'text/plain',
'metadata' => [],
'tables' => [],
'detected_languages' => ['eng'],
'chunks' => null,
'images' => null,
];
// Create mock extraction config
$this->mockConfig = (object)[];
// Initialize plugin
$this->plugin = new WordCountProcessor();
$this->plugin->initialize();
}
protected function tearDown(): void {
$this->plugin->shutdown();
}
public function testPluginInitialization(): void {
$this->assertNotNull($this->plugin);
$this->assertEqual($this->plugin->name(), "word-count");
}
public function testPluginProcessing(): void {
// Test that plugin processes results
$this->plugin->process($this->mockResult, $this->mockConfig);
$this->assertArrayHasKey('word_count', $this->mockResult->metadata);
$this->assertGreaterThan(0, $this->mockResult->metadata['word_count']);
}
public function testShouldProcess(): void {
// Test shouldProcess logic
$this->assertTrue($this->plugin->shouldProcess($this->mockResult, $this->mockConfig));
// Empty content should not process
$emptyResult = (object)['content' => ''];
$this->assertFalse($this->plugin->shouldProcess($emptyResult, $this->mockConfig));
}
public function testProcessingStage(): void {
$stage = $this->plugin->processingStage();
$this->assertEqual($stage, "Early");
}
public function testPriority(): void {
$priority = $this->plugin->priority();
$this->assertGreaterThanOrEqual(0, $priority);
$this->assertLessThanOrEqual(255, $priority);
}
}