67 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			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());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 |