Skip to content

Commit

Permalink
test: decorate name converter as symfony interface changed
Browse files Browse the repository at this point in the history
  • Loading branch information
soyuka committed Mar 21, 2024
1 parent 23a9f2a commit 3643152
Show file tree
Hide file tree
Showing 6 changed files with 75 additions and 47 deletions.
52 changes: 20 additions & 32 deletions features/openapi/docs.feature
Original file line number Diff line number Diff line change
Expand Up @@ -409,38 +409,26 @@ Feature: Documentation support
Then the response status code should be 200
And the response should be in JSON
And the JSON node "openapi" should be equal to "3.0.0"
And the JSON node "components.schemas.DummyBoolean" should be equal to:
And the JSON node "components.schemas.DummyBoolean.properties.id.anyOf" should be equal to:
"""
{
"type": "object",
"description": "",
"deprecated": false,
"properties": {
"id": {
"readOnly": true,
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
]
},
"isDummyBoolean": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"dummyBoolean": {
"readOnly": true,
"type": "boolean"
}
[
{
"type": "integer"
},
{
"type": "null"
}
}
]
"""
And the JSON node "components.schemas.DummyBoolean.properties.isDummyBoolean.anyOf" should be equal to:
"""
[
{
"type": "boolean"
},
{
"type": "null"
}
]
"""
And the JSON node "components.schemas.DummyBoolean.properties.isDummyBoolean.owl:maxCardinality" should not exist
14 changes: 11 additions & 3 deletions src/Doctrine/Odm/Tests/Fixtures/CustomConverter.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,20 +14,28 @@
namespace ApiPlatform\Doctrine\Odm\Tests\Fixtures;

use Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter;
use Symfony\Component\Serializer\NameConverter\NameConverterInterface;

/**
* Custom converter that will only convert a property named "nameConverted"
* with the same logic as Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter.
*/
class CustomConverter extends CamelCaseToSnakeCaseNameConverter
class CustomConverter implements NameConverterInterface
{
private NameConverterInterface $nameConverter;

public function __construct()
{
$this->nameConverter = new CamelCaseToSnakeCaseNameConverter();
}

public function normalize(string $propertyName): string
{
return 'nameConverted' === $propertyName ? parent::normalize($propertyName) : $propertyName;
return 'nameConverted' === $propertyName ? $this->nameConverter->normalize($propertyName) : $propertyName;
}

public function denormalize(string $propertyName): string
{
return 'name_converted' === $propertyName ? parent::denormalize($propertyName) : $propertyName;
return 'name_converted' === $propertyName ? $this->nameConverter->denormalize($propertyName) : $propertyName;
}
}
14 changes: 11 additions & 3 deletions src/Doctrine/Orm/Tests/Fixtures/CustomConverter.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,20 +14,28 @@
namespace ApiPlatform\Doctrine\Orm\Tests\Fixtures;

use Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter;
use Symfony\Component\Serializer\NameConverter\NameConverterInterface;

/**
* Custom converter that will only convert a property named "nameConverted"
* with the same logic as Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter.
*/
class CustomConverter extends CamelCaseToSnakeCaseNameConverter
class CustomConverter implements NameConverterInterface
{
private NameConverterInterface $nameConverter;

public function __construct()
{
$this->nameConverter = new CamelCaseToSnakeCaseNameConverter();
}

public function normalize(string $propertyName): string
{
return 'nameConverted' === $propertyName ? parent::normalize($propertyName) : $propertyName;
return 'nameConverted' === $propertyName ? $this->nameConverter->normalize($propertyName) : $propertyName;
}

public function denormalize(string $propertyName): string
{
return 'name_converted' === $propertyName ? parent::denormalize($propertyName) : $propertyName;
return 'name_converted' === $propertyName ? $this->nameConverter->denormalize($propertyName) : $propertyName;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,20 +14,28 @@
namespace ApiPlatform\GraphQl\Tests\Fixtures\Serializer\NameConverter;

use Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter;
use Symfony\Component\Serializer\NameConverter\NameConverterInterface;

/**
* Custom converter that will only convert a property named "nameConverted"
* with the same logic as Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter.
*/
class CustomConverter extends CamelCaseToSnakeCaseNameConverter
class CustomConverter implements NameConverterInterface
{
private NameConverterInterface $nameConverter;

public function __construct()
{
$this->nameConverter = new CamelCaseToSnakeCaseNameConverter();
}

public function normalize(string $propertyName): string
{
return 'nameConverted' === $propertyName ? parent::normalize($propertyName) : $propertyName;
return 'nameConverted' === $propertyName ? $this->nameConverter->normalize($propertyName) : $propertyName;
}

public function denormalize(string $propertyName): string
{
return 'name_converted' === $propertyName ? parent::denormalize($propertyName) : $propertyName;
return 'name_converted' === $propertyName ? $this->nameConverter->denormalize($propertyName) : $propertyName;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,20 +14,28 @@
namespace ApiPlatform\Serializer\Tests\Fixtures\Serializer\NameConverter;

use Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter;
use Symfony\Component\Serializer\NameConverter\NameConverterInterface;

/**
* Custom converter that will only convert a property named "nameConverted"
* with the same logic as Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter.
*/
final class CustomConverter extends CamelCaseToSnakeCaseNameConverter
class CustomConverter implements NameConverterInterface
{
private NameConverterInterface $nameConverter;

public function __construct()
{
$this->nameConverter = new CamelCaseToSnakeCaseNameConverter();
}

public function normalize(string $propertyName): string
{
return 'nameConverted' === $propertyName ? parent::normalize($propertyName) : $propertyName;
return 'nameConverted' === $propertyName ? $this->nameConverter->normalize($propertyName) : $propertyName;
}

public function denormalize(string $propertyName): string
{
return 'name_converted' === $propertyName ? parent::denormalize($propertyName) : $propertyName;
return 'name_converted' === $propertyName ? $this->nameConverter->denormalize($propertyName) : $propertyName;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,20 +14,28 @@
namespace ApiPlatform\Tests\Fixtures\TestBundle\Serializer\NameConverter;

use Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter;
use Symfony\Component\Serializer\NameConverter\NameConverterInterface;

/**
* Custom converter that will only convert a property named "nameConverted"
* with the same logic as Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter.
*/
class CustomConverter extends CamelCaseToSnakeCaseNameConverter
class CustomConverter implements NameConverterInterface
{
private NameConverterInterface $nameConverter;

public function __construct()
{
$this->nameConverter = new CamelCaseToSnakeCaseNameConverter();
}

public function normalize(string $propertyName): string
{
return 'nameConverted' === $propertyName ? parent::normalize($propertyName) : $propertyName;
return 'nameConverted' === $propertyName ? $this->nameConverter->normalize($propertyName) : $propertyName;
}

public function denormalize(string $propertyName): string
{
return 'name_converted' === $propertyName ? parent::denormalize($propertyName) : $propertyName;
return 'name_converted' === $propertyName ? $this->nameConverter->denormalize($propertyName) : $propertyName;
}
}

0 comments on commit 3643152

Please sign in to comment.