Files
michaelschiemer/tests/Framework/Attributes/Execution/CallbackMetadataTest.php
2025-11-24 21:28:25 +01:00

81 lines
2.8 KiB
PHP

<?php
declare(strict_types=1);
namespace Tests\Framework\Attributes\Execution;
use App\Framework\Attributes\Execution\CallbackMetadata;
use App\Framework\Attributes\Execution\CallbackType;
use PHPUnit\Framework\TestCase;
final class CallbackMetadataTest extends TestCase
{
public function testFromHandler(): void
{
$metadata = CallbackMetadata::fromHandler('MyHandler', ['arg1', 'arg2']);
$this->assertEquals(CallbackType::HANDLER, $metadata->callbackType);
$this->assertEquals('MyHandler', $metadata->class);
$this->assertNull($metadata->method);
$this->assertEquals(['arg1', 'arg2'], $metadata->args);
}
public function testFromCallableString(): void
{
$metadata = CallbackMetadata::fromCallable('MyClass::myMethod');
$this->assertEquals(CallbackType::STATIC_METHOD, $metadata->callbackType);
$this->assertEquals('MyClass', $metadata->class);
$this->assertEquals('myMethod', $metadata->method);
$this->assertEquals([], $metadata->args);
}
public function testFromCallableArray(): void
{
$metadata = CallbackMetadata::fromCallable(['MyClass', 'myMethod']);
$this->assertEquals(CallbackType::STATIC_METHOD, $metadata->callbackType);
$this->assertEquals('MyClass', $metadata->class);
$this->assertEquals('myMethod', $metadata->method);
}
public function testFromFactory(): void
{
$metadata = CallbackMetadata::fromFactory('MyFactory', 'create', ['param1']);
$this->assertEquals(CallbackType::FACTORY, $metadata->callbackType);
$this->assertEquals('MyFactory', $metadata->class);
$this->assertEquals('create', $metadata->method);
$this->assertEquals(['param1'], $metadata->args);
}
public function testToArrayAndFromArray(): void
{
$original = CallbackMetadata::fromHandler('MyHandler', ['arg1']);
$array = $original->toArray();
$restored = CallbackMetadata::fromArray($array);
$this->assertEquals($original->callbackType, $restored->callbackType);
$this->assertEquals($original->class, $restored->class);
$this->assertEquals($original->method, $restored->method);
$this->assertEquals($original->args, $restored->args);
}
public function testIsCacheable(): void
{
$handler = CallbackMetadata::fromHandler('MyHandler');
$this->assertTrue($handler->isCacheable());
$callable = CallbackMetadata::fromCallable('MyClass::method');
$this->assertTrue($callable->isCacheable());
$factory = CallbackMetadata::fromFactory('MyFactory', 'create');
$this->assertTrue($factory->isCacheable());
$closure = new CallbackMetadata(CallbackType::CLOSURE, '');
$this->assertFalse($closure->isCacheable());
}
}