react-command-bus/tests/CommandRegistryTest.php

67 lines
1.7 KiB
PHP

<?php
namespace NoccyLabs\React\CommandBus;
use PHPUnit\Framework\Attributes\CoversClass;
#[CoversClass(CommandRegistry::class)]
class CommandRegistryTest extends \PHPUnit\Framework\TestCase
{
public function testAddingNewCommandEmitsEvent()
{
$count = 0;
$reg = new CommandRegistry();
$reg->on(CommandRegistry::EVENT_REGISTERED, function ($data) use (&$count){
$this->assertEquals('foo', $data);
$count++;
});
$reg->register('foo', function () {});
$reg->register('foo', function () {});
$this->assertEquals(1, $count);
}
public function testRemovingCommandEmitsEvent()
{
$count = 0;
$reg = new CommandRegistry();
$reg->on(CommandRegistry::EVENT_UNREGISTERED, function ($data) use (&$count){
$this->assertEquals('foo', $data);
$count++;
});
$reg->register('foo', function () {});
$reg->unregister('foo');
$reg->unregister('foo');
$this->assertEquals(1, $count);
}
public function testFindingCommands()
{
$cmda = function () {};
$cmdb = function () {};
$reg = new CommandRegistry();
$reg->register('a', $cmda);
$reg->register('b', $cmdb);
$this->assertEquals('a', $reg->find('a')?->getName());
$this->assertEquals('b', $reg->find('b')?->getName());
}
public function testGettingCommandNames()
{
$cmda = function () {};
$cmdb = function () {};
$reg = new CommandRegistry();
$reg->register('a', $cmda);
$reg->register('b', $cmdb);
$this->assertEquals(['a','b'], $reg->getNames());
}
}