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