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'));
 | |
|     }
 | |
| }
 |