forked from loafle/openapi-generator-original
[php-flight] fix: parsing class/enum models (#18528)
This commit is contained in:
parent
06ed7c8205
commit
7070255dc5
@ -73,7 +73,10 @@ function parseParam(mixed $param, string $type)
|
||||
} elseif (str_ends_with($type, '[]')) {
|
||||
return array_map(fn($el) => parseParam($el, substr($type, 0, -2)), $param);
|
||||
} elseif (str_starts_with($nonNullType, '\\{{escapedModelPackage}}')) {
|
||||
return new $nonNullType($param);
|
||||
if (enum_exists($nonNullType)) {
|
||||
return $nonNullType::tryFrom($param);
|
||||
}
|
||||
return $nonNullType::fromArray($param);
|
||||
} else {
|
||||
return $param;
|
||||
}
|
||||
|
@ -5,6 +5,8 @@
|
||||
{{#apiInfo}}
|
||||
namespace {{testPackage}};
|
||||
|
||||
use function {{invokerPackage}}\parseParam;
|
||||
|
||||
class RegisterRoutesTest extends \PHPUnit\Framework\TestCase {
|
||||
{{#apis}}
|
||||
public function testRegisterRoutes{{classname}}(): void
|
||||
@ -27,5 +29,25 @@ class RegisterRoutesTest extends \PHPUnit\Framework\TestCase {
|
||||
$this->assertTrue(true);
|
||||
}
|
||||
{{/apis}}
|
||||
{{#models}}
|
||||
{{#model}}
|
||||
{{#isEnum}}
|
||||
public function testParseParamsEnum{{classname}}(): void
|
||||
{
|
||||
{{#allowableValues}}
|
||||
{{#enumVars}}
|
||||
{{#-first}}
|
||||
$value = {{{value}}};
|
||||
{{/-first}}
|
||||
{{/enumVars}}
|
||||
{{/allowableValues}}
|
||||
$this->assertEquals(
|
||||
parseParam($value, '\\{{escapedModelPackage}}\\{{classname}}'),
|
||||
\{{modelPackage}}\{{classname}}::{{#allowableValues}}{{#enumVars}}{{#-first}}{{{name}}}{{/-first}}{{/enumVars}}{{/allowableValues}}
|
||||
);
|
||||
}
|
||||
{{/isEnum}}
|
||||
{{/model}}
|
||||
{{/models}}
|
||||
}
|
||||
{{/apiInfo}}
|
||||
|
@ -368,7 +368,10 @@ function parseParam(mixed $param, string $type)
|
||||
} elseif (str_ends_with($type, '[]')) {
|
||||
return array_map(fn($el) => parseParam($el, substr($type, 0, -2)), $param);
|
||||
} elseif (str_starts_with($nonNullType, '\\OpenAPIServer\\Model')) {
|
||||
return new $nonNullType($param);
|
||||
if (enum_exists($nonNullType)) {
|
||||
return $nonNullType::tryFrom($param);
|
||||
}
|
||||
return $nonNullType::fromArray($param);
|
||||
} else {
|
||||
return $param;
|
||||
}
|
||||
|
@ -17,6 +17,8 @@
|
||||
|
||||
namespace OpenAPIServer\Test;
|
||||
|
||||
use function OpenAPIServer\parseParam;
|
||||
|
||||
class RegisterRoutesTest extends \PHPUnit\Framework\TestCase {
|
||||
public function testRegisterRoutesAbstractPetApi(): void
|
||||
{
|
||||
@ -49,4 +51,28 @@ class RegisterRoutesTest extends \PHPUnit\Framework\TestCase {
|
||||
\OpenAPIServer\RegisterRoutes::registerRoutes($handler);
|
||||
$this->assertTrue(true);
|
||||
}
|
||||
public function testParseParamsEnumFindPetsByStatusStatusParameterInner(): void
|
||||
{
|
||||
$value = 'available';
|
||||
$this->assertEquals(
|
||||
parseParam($value, '\\OpenAPIServer\\Model\\FindPetsByStatusStatusParameterInner'),
|
||||
\OpenAPIServer\Model\FindPetsByStatusStatusParameterInner::AVAILABLE
|
||||
);
|
||||
}
|
||||
public function testParseParamsEnumOrderStatus(): void
|
||||
{
|
||||
$value = 'placed';
|
||||
$this->assertEquals(
|
||||
parseParam($value, '\\OpenAPIServer\\Model\\OrderStatus'),
|
||||
\OpenAPIServer\Model\OrderStatus::PLACED
|
||||
);
|
||||
}
|
||||
public function testParseParamsEnumPetStatus(): void
|
||||
{
|
||||
$value = 'available';
|
||||
$this->assertEquals(
|
||||
parseParam($value, '\\OpenAPIServer\\Model\\PetStatus'),
|
||||
\OpenAPIServer\Model\PetStatus::AVAILABLE
|
||||
);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user