86 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
| <?php declare(strict_types=1);
 | |
| 
 | |
| /**
 | |
|  * @license Apache 2.0
 | |
|  */
 | |
| 
 | |
| namespace OpenApi\Tests;
 | |
| 
 | |
| use OpenApi\Generator;
 | |
| use OpenApi\Logger;
 | |
| use OpenApi\Processors\OperationId;
 | |
| use OpenApi\Util;
 | |
| 
 | |
| class GeneratorTest extends OpenApiTestCase
 | |
| {
 | |
|     const SOURCE_DIR = __DIR__ . '/../Examples/swagger-spec/petstore-simple';
 | |
| 
 | |
|     public function sourcesProvider()
 | |
|     {
 | |
|         $sourceDir = self::SOURCE_DIR;
 | |
|         $sources = [
 | |
|             $sourceDir . '/SimplePet.php',
 | |
|             $sourceDir . '/SimplePetsController.php',
 | |
|             $sourceDir . '/api.php',
 | |
|         ];
 | |
| 
 | |
|         return [
 | |
|             'dir-list' => [$sourceDir, [$sourceDir]],
 | |
|             'file-list' => [$sourceDir, $sources],
 | |
|             'finder' => [$sourceDir, Util::finder($sourceDir)],
 | |
|             'finder-list' => [$sourceDir, [Util::finder($sourceDir)]],
 | |
|         ];
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @dataProvider sourcesProvider
 | |
|      */
 | |
|     public function testScan(string $sourceDir, iterable $sources)
 | |
|     {
 | |
|         $openapi = (new Generator())
 | |
|             ->scan($sources);
 | |
| 
 | |
|         $this->assertSpecEquals(file_get_contents(sprintf('%s/%s.yaml', $sourceDir, basename($sourceDir))), $openapi);
 | |
|     }
 | |
| 
 | |
|     public function testLogger()
 | |
|     {
 | |
|         // reset test logger
 | |
|         Logger::getInstance()->log = function ($entry, $type) {
 | |
|             $this->fail('Wrong logger');
 | |
|         };
 | |
| 
 | |
|         $this->assertOpenApiLogEntryContains('The annotation @SWG\Definition() is deprecated.');
 | |
|         $this->assertOpenApiLogEntryContains('Required @OA\Info() not found');
 | |
|         $this->assertOpenApiLogEntryContains('Required @OA\PathItem() not found');
 | |
| 
 | |
|         (new Generator($this->getPsrLogger(true)))
 | |
|             ->setAliases(['swg' => 'OpenApi\Annotations'])
 | |
|             ->generate($this->fixtures('Deprecated.php'));
 | |
|     }
 | |
| 
 | |
|     public function processorCases()
 | |
|     {
 | |
|         return [
 | |
|             [new OperationId(false), false],
 | |
|             [new OperationId(true), true],
 | |
|             [new class(false) extends OperationId {
 | |
|             }, false],
 | |
|         ];
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @dataProvider processorCases
 | |
|      */
 | |
|     public function testUpdateProcessor($p, $expected)
 | |
|     {
 | |
|         $generator = (new Generator())
 | |
|             ->updateProcessor($p);
 | |
|         foreach ($generator->getProcessors() as $processor) {
 | |
|             if ($processor instanceof OperationId) {
 | |
|                 $this->assertSpecEquals($expected, $processor->isHash());
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 |