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