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