111 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
<?php
 | 
						|
 | 
						|
require_once('test_base.php');
 | 
						|
require_once('test_util.php');
 | 
						|
 | 
						|
use Google\Protobuf\Internal\RepeatedField;
 | 
						|
use Google\Protobuf\Internal\MapField;
 | 
						|
use Google\Protobuf\Internal\GPBType;
 | 
						|
use Foo\Greeter;
 | 
						|
use Foo\HelloRequest;
 | 
						|
use Foo\HelloReply;
 | 
						|
 | 
						|
class GeneratedServiceTest extends TestBase
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * @var \ReflectionClass
 | 
						|
     */
 | 
						|
    private $serviceClass;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @var \ReflectionClass
 | 
						|
     */
 | 
						|
    private $namespacedServiceClass;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @var array
 | 
						|
     */
 | 
						|
    private $methodNames = [
 | 
						|
        'sayHello',
 | 
						|
        'sayHelloAgain'
 | 
						|
    ];
 | 
						|
 | 
						|
    public function setUp()
 | 
						|
    {
 | 
						|
        parent::setUp();
 | 
						|
 | 
						|
        $this->serviceClass = new ReflectionClass('Foo\GreeterInterface');
 | 
						|
 | 
						|
        $this->namespacedServiceClass = new ReflectionClass('Bar\OtherGreeterInterface');
 | 
						|
    }
 | 
						|
 | 
						|
    public function testIsInterface()
 | 
						|
    {
 | 
						|
        $this->assertTrue($this->serviceClass->isInterface());
 | 
						|
    }
 | 
						|
 | 
						|
    public function testPhpDocForClass()
 | 
						|
    {
 | 
						|
        $this->assertContains('foo.Greeter', $this->serviceClass->getDocComment());
 | 
						|
    }
 | 
						|
 | 
						|
    public function testPhpDocForNamespacedClass()
 | 
						|
    {
 | 
						|
        $this->assertContains('foo.OtherGreeter', $this->namespacedServiceClass->getDocComment());
 | 
						|
    }
 | 
						|
 | 
						|
    public function testServiceMethodsAreGenerated()
 | 
						|
    {
 | 
						|
        $this->assertCount(count($this->methodNames), $this->serviceClass->getMethods());
 | 
						|
        foreach ($this->methodNames as $methodName) {
 | 
						|
            $this->assertTrue($this->serviceClass->hasMethod($methodName));
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    public function testPhpDocForServiceMethod()
 | 
						|
    {
 | 
						|
        foreach ($this->methodNames as $methodName) {
 | 
						|
            $docComment = $this->serviceClass->getMethod($methodName)->getDocComment();
 | 
						|
            $this->assertContains($methodName, $docComment);
 | 
						|
            $this->assertContains('@param \Foo\HelloRequest $request', $docComment);
 | 
						|
            $this->assertContains('@return \Foo\HelloReply', $docComment);
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    public function testPhpDocForServiceMethodInNamespacedClass()
 | 
						|
    {
 | 
						|
        foreach ($this->methodNames as $methodName) {
 | 
						|
            $docComment = $this->namespacedServiceClass->getMethod($methodName)->getDocComment();
 | 
						|
            $this->assertContains($methodName, $docComment);
 | 
						|
            $this->assertContains('@param \Foo\HelloRequest $request', $docComment);
 | 
						|
            $this->assertContains('@return \Foo\HelloReply', $docComment);
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    public function testParamForServiceMethod()
 | 
						|
    {
 | 
						|
        foreach ($this->methodNames as $methodName) {
 | 
						|
            $method = $this->serviceClass->getMethod($methodName);
 | 
						|
            $this->assertCount(1, $method->getParameters());
 | 
						|
            $param = $method->getParameters()[0];
 | 
						|
            $this->assertFalse($param->isOptional());
 | 
						|
            $this->assertSame('request', $param->getName());
 | 
						|
            // ReflectionParameter::getType only exists in PHP 7+, so get the type from __toString
 | 
						|
            $this->assertContains('Foo\HelloRequest $request', (string) $param);
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    public function testParamForServiceMethodInNamespacedClass()
 | 
						|
    {
 | 
						|
        foreach ($this->methodNames as $methodName) {
 | 
						|
            $method = $this->serviceClass->getMethod($methodName);
 | 
						|
            $this->assertCount(1, $method->getParameters());
 | 
						|
            $param = $method->getParameters()[0];
 | 
						|
            $this->assertFalse($param->isOptional());
 | 
						|
            $this->assertSame('request', $param->getName());
 | 
						|
            // ReflectionParameter::getType only exists in PHP 7+, so get the type from __toString
 | 
						|
            $this->assertContains('Foo\HelloRequest $request', (string) $param);
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |