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