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