44 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			44 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
|  | <?php | ||
|  | declare(strict_types = 1); | ||
|  | 
 | ||
|  | namespace LanguageServer\Tests; | ||
|  | 
 | ||
|  | use PHPUnit\Framework\TestCase; | ||
|  | use LanguageServer\ClientHandler; | ||
|  | use LanguageServer\Protocol\Message; | ||
|  | use AdvancedJsonRpc; | ||
|  | use Sabre\Event\Loop; | ||
|  | 
 | ||
|  | class ClientHandlerTest extends TestCase | ||
|  | { | ||
|  |     public function testRequest() | ||
|  |     { | ||
|  |         $reader = new MockProtocolStream; | ||
|  |         $writer = new MockProtocolStream; | ||
|  |         $handler = new ClientHandler($reader, $writer); | ||
|  |         $writer->once('message', function (Message $msg) use ($reader) { | ||
|  |             // Respond to request
 | ||
|  |             Loop\setTimeout(function () use ($reader, $msg) { | ||
|  |                 $reader->write(new Message(new AdvancedJsonRpc\SuccessResponse($msg->body->id, 'pong'))); | ||
|  |             }, 0); | ||
|  |         }); | ||
|  |         $handler->request('testMethod', ['ping'])->then(function ($result) { | ||
|  |             $this->assertEquals('pong', $result); | ||
|  |         })->wait(); | ||
|  |         // No event listeners
 | ||
|  |         $this->assertEquals([], $reader->listeners('message')); | ||
|  |         $this->assertEquals([], $writer->listeners('message')); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function testNotify() | ||
|  |     { | ||
|  |         $reader = new MockProtocolStream; | ||
|  |         $writer = new MockProtocolStream; | ||
|  |         $handler = new ClientHandler($reader, $writer); | ||
|  |         $handler->notify('testMethod', ['ping'])->wait(); | ||
|  |         // No event listeners
 | ||
|  |         $this->assertEquals([], $reader->listeners('message')); | ||
|  |         $this->assertEquals([], $writer->listeners('message')); | ||
|  |     } | ||
|  | } |