Skip to content

Commit e3d26c9

Browse files
authored
test: decorate name converter as symfony interface changed (api-platform#6261)
* test: decorate name converter as symfony interface changed * test
1 parent 4c5a35f commit e3d26c9

File tree

6 files changed

+39
-15
lines changed

6 files changed

+39
-15
lines changed

.github/workflows/guides.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,9 @@ jobs:
4242
restore-keys: ${{ runner.os }}-composer-
4343
- name: Install project dependencies
4444
working-directory: docs
45-
run: composer install --no-interaction --no-progress --ansi && composer require webonyx/graphql-php
45+
run: |
46+
composer update --no-interaction --no-progress --ansi
47+
cp -r ../src ./vendor/api-platform/core/
4648
- name: Test guides
4749
working-directory: docs
4850
env:

docs/composer.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@
3434
"zenstruck/foundry": "^1.31",
3535
"symfony/http-client": "^6.4 || ^7.0",
3636
"symfony/browser-kit": "^6.4 || ^7.0",
37-
"justinrainbow/json-schema": "^5.2"
37+
"justinrainbow/json-schema": "^5.2",
38+
"webonyx/graphql-php": "^15.11"
3839
},
3940
"config": {
4041
"allow-plugins": {
@@ -43,6 +44,5 @@
4344
},
4445
"require-dev": {
4546
"phpunit/phpunit": "^10"
46-
},
47-
"minimum-stability": "dev"
47+
}
4848
}

docs/config/packages/framework.yaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,7 @@ api_platform:
77
json: ['application/json']
88
docs_formats:
99
jsonopenapi: ['application/vnd.openapi+json']
10-
event_listeners_backward_compatibility_layer: false
1110
keep_legacy_inflector: false
1211
defaults:
1312
extra_properties:
14-
rfc_7807_compliant_errors: true
1513
standard_put: true

src/GraphQl/Tests/Fixtures/Serializer/NameConverter/CustomConverter.php

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,28 @@
1414
namespace ApiPlatform\GraphQl\Tests\Fixtures\Serializer\NameConverter;
1515

1616
use Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter;
17+
use Symfony\Component\Serializer\NameConverter\NameConverterInterface;
1718

1819
/**
1920
* Custom converter that will only convert a property named "nameConverted"
2021
* with the same logic as Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter.
2122
*/
22-
class CustomConverter extends CamelCaseToSnakeCaseNameConverter
23+
class CustomConverter implements NameConverterInterface
2324
{
25+
private NameConverterInterface $nameConverter;
26+
27+
public function __construct()
28+
{
29+
$this->nameConverter = new CamelCaseToSnakeCaseNameConverter();
30+
}
31+
2432
public function normalize(string $propertyName): string
2533
{
26-
return 'nameConverted' === $propertyName ? parent::normalize($propertyName) : $propertyName;
34+
return 'nameConverted' === $propertyName ? $this->nameConverter->normalize($propertyName) : $propertyName;
2735
}
2836

2937
public function denormalize(string $propertyName): string
3038
{
31-
return 'name_converted' === $propertyName ? parent::denormalize($propertyName) : $propertyName;
39+
return 'name_converted' === $propertyName ? $this->nameConverter->denormalize($propertyName) : $propertyName;
3240
}
3341
}

src/Serializer/Tests/Fixtures/Serializer/NameConverter/CustomConverter.php

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,28 @@
1414
namespace ApiPlatform\Serializer\Tests\Fixtures\Serializer\NameConverter;
1515

1616
use Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter;
17+
use Symfony\Component\Serializer\NameConverter\NameConverterInterface;
1718

1819
/**
1920
* Custom converter that will only convert a property named "nameConverted"
2021
* with the same logic as Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter.
2122
*/
22-
final class CustomConverter extends CamelCaseToSnakeCaseNameConverter
23+
class CustomConverter implements NameConverterInterface
2324
{
25+
private NameConverterInterface $nameConverter;
26+
27+
public function __construct()
28+
{
29+
$this->nameConverter = new CamelCaseToSnakeCaseNameConverter();
30+
}
31+
2432
public function normalize(string $propertyName): string
2533
{
26-
return 'nameConverted' === $propertyName ? parent::normalize($propertyName) : $propertyName;
34+
return 'nameConverted' === $propertyName ? $this->nameConverter->normalize($propertyName) : $propertyName;
2735
}
2836

2937
public function denormalize(string $propertyName): string
3038
{
31-
return 'name_converted' === $propertyName ? parent::denormalize($propertyName) : $propertyName;
39+
return 'name_converted' === $propertyName ? $this->nameConverter->denormalize($propertyName) : $propertyName;
3240
}
3341
}

tests/Fixtures/TestBundle/Serializer/NameConverter/CustomConverter.php

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,28 @@
1414
namespace ApiPlatform\Tests\Fixtures\TestBundle\Serializer\NameConverter;
1515

1616
use Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter;
17+
use Symfony\Component\Serializer\NameConverter\NameConverterInterface;
1718

1819
/**
1920
* Custom converter that will only convert a property named "nameConverted"
2021
* with the same logic as Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter.
2122
*/
22-
class CustomConverter extends CamelCaseToSnakeCaseNameConverter
23+
class CustomConverter implements NameConverterInterface
2324
{
25+
private NameConverterInterface $nameConverter;
26+
27+
public function __construct()
28+
{
29+
$this->nameConverter = new CamelCaseToSnakeCaseNameConverter();
30+
}
31+
2432
public function normalize(string $propertyName): string
2533
{
26-
return 'nameConverted' === $propertyName ? parent::normalize($propertyName) : $propertyName;
34+
return 'nameConverted' === $propertyName ? $this->nameConverter->normalize($propertyName) : $propertyName;
2735
}
2836

2937
public function denormalize(string $propertyName): string
3038
{
31-
return 'name_converted' === $propertyName ? parent::denormalize($propertyName) : $propertyName;
39+
return 'name_converted' === $propertyName ? $this->nameConverter->denormalize($propertyName) : $propertyName;
3240
}
3341
}

0 commit comments

Comments
 (0)