56 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			56 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
|  | <?php declare(strict_types=1); | ||
|  | 
 | ||
|  | /** | ||
|  |  * @license Apache 2.0 | ||
|  |  */ | ||
|  | 
 | ||
|  | namespace OpenApi\Tests; | ||
|  | 
 | ||
|  | use OpenApi\Generator; | ||
|  | use OpenApi\Util; | ||
|  | use Symfony\Component\Finder\Finder; | ||
|  | 
 | ||
|  | class UtilTest extends OpenApiTestCase | ||
|  | { | ||
|  |     public function testExclude() | ||
|  |     { | ||
|  |         $exclude = [ | ||
|  |             'Customer.php', | ||
|  |             'CustomerInterface.php', | ||
|  |             'GrandAncestor.php', | ||
|  |             'InheritProperties', | ||
|  |             'Parser', | ||
|  |             'Processors', | ||
|  |             'UsingRefs.php', | ||
|  |             'UsingPhpDoc.php', | ||
|  |         ]; | ||
|  |         $openapi = Generator::scan(Util::finder(__DIR__ . '/Fixtures', $exclude)); | ||
|  |         $this->assertSame('Fixture for ParserTest', $openapi->info->title, 'No errors about duplicate @OA\Info() annotations'); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function testRefEncode() | ||
|  |     { | ||
|  |         $this->assertSame('#/paths/~1blogs~1{blog_id}~1new~0posts', '#/paths/' . Util::refEncode('/blogs/{blog_id}/new~posts')); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function testRefDecode() | ||
|  |     { | ||
|  |         $this->assertSame('/blogs/{blog_id}/new~posts', Util::refDecode('~1blogs~1{blog_id}~1new~0posts')); | ||
|  |     } | ||
|  | 
 | ||
|  |     public function testFinder() | ||
|  |     { | ||
|  |         // Create a finder for one of the example directories that has a subdirectory.
 | ||
|  |         $finder = (new Finder())->in(__DIR__ . '/../Examples/using-traits'); | ||
|  |         $this->assertGreaterThan(0, iterator_count($finder), 'There should be at least a few files and a directory.'); | ||
|  |         $finder_array = \iterator_to_array($finder); | ||
|  |         $directory_path = __DIR__ . '/../Examples/using-traits/Decoration'; | ||
|  |         $this->assertArrayHasKey($directory_path, $finder_array, 'The directory should be a path in the finder.'); | ||
|  |         // Use the Util method that should set the finder to only find files, since swagger-php only needs files.
 | ||
|  |         $finder_result = Util::finder($finder); | ||
|  |         $this->assertGreaterThan(0, iterator_count($finder_result), 'There should be at least a few file paths.'); | ||
|  |         $finder_result_array = \iterator_to_array($finder_result); | ||
|  |         $this->assertArrayNotHasKey($directory_path, $finder_result_array, 'The directory should not be a path in the finder.'); | ||
|  |     } | ||
|  | } |