Skip to content

Commit

Permalink
Fix tests and api-platform integration (#2109)
Browse files Browse the repository at this point in the history
  • Loading branch information
GuilhemN committed Jun 16, 2023
1 parent ed09cf7 commit b9fc542
Show file tree
Hide file tree
Showing 19 changed files with 59 additions and 48 deletions.
6 changes: 2 additions & 4 deletions .github/workflows/continuous-integration.yml
Expand Up @@ -27,15 +27,13 @@ jobs:
- php-version: 7.2
composer-flags: "--prefer-lowest"
- php-version: 7.3
symfony-require: "4.4.*"
- php-version: 7.4
symfony-require: "5.3.*"
symfony-require: "5.4.*"
- php-version: 8.0
symfony-require: "5.4.*"
- php-version: 8.1
symfony-require: "5.4.*"
- php-version: 8.1
symfony-require: "6.0.*"
symfony-require: "6.3.*"

steps:
- name: "Checkout"
Expand Down
2 changes: 1 addition & 1 deletion DependencyInjection/Compiler/ConfigurationPass.php
Expand Up @@ -23,7 +23,7 @@
*/
final class ConfigurationPass implements CompilerPassInterface
{
public function process(ContainerBuilder $container)
public function process(ContainerBuilder $container): void
{
if ($container->hasDefinition('form.factory')) {
$container->register('nelmio_api_doc.model_describers.form', FormModelDescriber::class)
Expand Down
2 changes: 1 addition & 1 deletion DependencyInjection/Compiler/PhpDocExtractorPass.php
Expand Up @@ -24,7 +24,7 @@
*/
final class PhpDocExtractorPass implements CompilerPassInterface
{
public function process(ContainerBuilder $container)
public function process(ContainerBuilder $container): void
{
if (!$container->hasDefinition('property_info.php_doc_extractor')) {
$definition = $container->register('property_info.php_doc_extractor', 'Symfony\Component\PropertyInfo\Extractor\PhpDocExtractor');
Expand Down
2 changes: 1 addition & 1 deletion DependencyInjection/Compiler/TagDescribersPass.php
Expand Up @@ -19,7 +19,7 @@
*/
final class TagDescribersPass implements CompilerPassInterface
{
public function process(ContainerBuilder $container)
public function process(ContainerBuilder $container): void
{
foreach ($container->findTaggedServiceIds('nelmio_api_doc.describer') as $id => $tags) {
$describer = $container->getDefinition($id);
Expand Down
13 changes: 11 additions & 2 deletions DependencyInjection/NelmioApiDocExtension.php
Expand Up @@ -38,7 +38,7 @@ final class NelmioApiDocExtension extends Extension implements PrependExtensionI
/**
* {@inheritdoc}
*/
public function prepend(ContainerBuilder $container)
public function prepend(ContainerBuilder $container): void
{
$container->prependExtensionConfig('framework', ['property_info' => ['enabled' => true]]);

Expand All @@ -53,7 +53,7 @@ public function prepend(ContainerBuilder $container)
/**
* {@inheritdoc}
*/
public function load(array $configs, ContainerBuilder $container)
public function load(array $configs, ContainerBuilder $container): void
{
$config = $this->processConfiguration(new Configuration(), $configs);
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
Expand Down Expand Up @@ -217,6 +217,15 @@ public function load(array $configs, ContainerBuilder $container)
if (null !== $controllerNameConverter) {
$container->getDefinition('nelmio_api_doc.controller_reflector')->setArgument(1, $controllerNameConverter);
}

// New parameter self-exclude has to be set to false for service nelmio_api_doc.object_model.property_describers.array
// BC compatibility with Symfony <6.3
$container->getDefinition('nelmio_api_doc.object_model.property_describers.array')
->setArguments([
!method_exists(TaggedIteratorArgument::class, 'excludeSelf')
? new TaggedIteratorArgument('nelmio_api_doc.object_model.property_describer')
: new TaggedIteratorArgument('nelmio_api_doc.object_model.property_describer', null, null, false, null, [], false),
]);
}

private function findNameAliases(array $names, string $area): array
Expand Down
7 changes: 6 additions & 1 deletion Describer/ApiPlatformDescriber.php
Expand Up @@ -13,12 +13,17 @@

use ApiPlatform\Core\Swagger\Serializer\DocumentationNormalizer;
use ApiPlatform\Documentation\DocumentationInterface;
use ApiPlatform\OpenApi\OpenApi;
use Symfony\Component\Serializer\Normalizer\NormalizerInterface;

final class ApiPlatformDescriber extends ExternalDocDescriber
{
public function __construct(DocumentationInterface $documentation, NormalizerInterface $normalizer)
public function __construct(object $documentation, NormalizerInterface $normalizer)
{
if (!$documentation instanceof DocumentationInterface && !$documentation instanceof OpenApi) {
throw new \InvalidArgumentException(sprintf('Argument 1 passed to %s() must be an instance of %s or %s. The documentation provided is an instance of %s.', __METHOD__, Documentation::class, OpenApi::class, get_class($documentation)));
}

if (!$normalizer->supportsNormalization($documentation, 'json')) {
throw new \InvalidArgumentException(sprintf('Argument 2 passed to %s() must implement %s and support normalization of %s. The normalizer provided is an instance of %s.', __METHOD__, NormalizerInterface::class, Documentation::class, get_class($normalizer)));
}
Expand Down
4 changes: 2 additions & 2 deletions Form/Extension/DocumentationExtension.php
Expand Up @@ -21,12 +21,12 @@
*/
class DocumentationExtension extends AbstractTypeExtension
{
public function buildForm(FormBuilderInterface $builder, array $options)
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder->setAttribute('documentation', $options['documentation']);
}

public function configureOptions(OptionsResolver $resolver)
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults(['documentation' => []])
->setAllowedTypes('documentation', ['array', 'bool']);
Expand Down
2 changes: 1 addition & 1 deletion Resources/config/services.xml
Expand Up @@ -95,7 +95,7 @@

<!-- Property Describers -->
<service id="nelmio_api_doc.object_model.property_describers.array" class="Nelmio\ApiDocBundle\PropertyDescriber\ArrayPropertyDescriber" public="false">
<argument type="tagged" tag="nelmio_api_doc.object_model.property_describer" />
<!-- <argument type="tagged" tag="nelmio_api_doc.object_model.property_describer" exclude-self="false" /> -->

<tag name="nelmio_api_doc.object_model.property_describer" />
</service>
Expand Down
1 change: 0 additions & 1 deletion Resources/doc/faq.rst
Expand Up @@ -30,7 +30,6 @@ A: You can configure ``schemas`` in the nelmio_api_doc configuration and then re
.. code-block:: php
// src/App/Controller/NelmioController.php
/**
* @OA\Response(
* response=200,
Expand Down
2 changes: 1 addition & 1 deletion Tests/Functional/Form/DocumentType.php
Expand Up @@ -17,7 +17,7 @@

class DocumentType extends AbstractType
{
public function configureOptions(OptionsResolver $resolver)
public function configureOptions(OptionsResolver $resolver): void
{
$resolver
->setRequired('class');
Expand Down
2 changes: 1 addition & 1 deletion Tests/Functional/Form/DummyEmptyType.php
Expand Up @@ -16,7 +16,7 @@

class DummyEmptyType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
public function buildForm(FormBuilderInterface $builder, array $options): void
{
}
}
2 changes: 1 addition & 1 deletion Tests/Functional/Form/DummyType.php
Expand Up @@ -22,7 +22,7 @@

class DummyType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder->add('bar', TextType::class, ['required' => false]);
$builder->add('foo', ChoiceType::class, ['choices' => ['male', 'female']]);
Expand Down
2 changes: 1 addition & 1 deletion Tests/Functional/Form/EntityType.php
Expand Up @@ -17,7 +17,7 @@

class EntityType extends AbstractType
{
public function configureOptions(OptionsResolver $resolver)
public function configureOptions(OptionsResolver $resolver): void
{
$resolver
->setDefault('multiple', false)
Expand Down
2 changes: 1 addition & 1 deletion Tests/Functional/Form/ExtendedBuiltinType.php
Expand Up @@ -17,7 +17,7 @@

class ExtendedBuiltinType extends AbstractType
{
public function configureOptions(OptionsResolver $resolver)
public function configureOptions(OptionsResolver $resolver): void
{
$resolver
->setDefaults([
Expand Down
2 changes: 1 addition & 1 deletion Tests/Functional/Form/FormWithAlternateSchemaType.php
Expand Up @@ -21,7 +21,7 @@
*/
class FormWithAlternateSchemaType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('ignored', InputType::class, [
Expand Down
4 changes: 2 additions & 2 deletions Tests/Functional/Form/FormWithModel.php
Expand Up @@ -20,13 +20,13 @@

class FormWithModel extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('quz', TextType::class, ['documentation' => ['ref' => new Model(['type' => User::class])]]);
}

public function configureOptions(OptionsResolver $resolver)
public function configureOptions(OptionsResolver $resolver): void
{
}
}
2 changes: 1 addition & 1 deletion Tests/Functional/Form/FormWithRefType.php
Expand Up @@ -21,7 +21,7 @@
*/
class FormWithRefType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('ignored', InputType::class, [
Expand Down
4 changes: 2 additions & 2 deletions Tests/Functional/Form/UserType.php
Expand Up @@ -27,7 +27,7 @@
*/
class UserType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('strings', CollectionType::class, [
Expand All @@ -52,7 +52,7 @@ public function buildForm(FormBuilderInterface $builder, array $options)
->add('save', SubmitType::class);
}

public function configureOptions(OptionsResolver $resolver)
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => User::class,
Expand Down
46 changes: 23 additions & 23 deletions composer.json
Expand Up @@ -17,36 +17,36 @@
"require": {
"php": ">=7.2",
"ext-json": "*",
"doctrine/annotations": "^1.11|^2.0",
"doctrine/annotations": "^2.0",
"psr/cache": "^1.0|^2.0|^3.0",
"psr/container": "^1.0|^2.0",
"psr/log": "^1.0|^2.0|^3.0",
"symfony/config": "^4.4|^5.0|^6.0",
"symfony/console": "^4.4|^5.0|^6.0",
"symfony/dependency-injection": "^4.4|^5.0|^6.0",
"symfony/framework-bundle": "^4.4|^5.0|^6.0",
"symfony/http-foundation": "^4.4|^5.0|^6.0",
"symfony/http-kernel": "^4.4|^5.0|^6.0",
"symfony/options-resolver": "^4.4|^5.0|^6.0",
"symfony/property-info": "^4.4|^5.0|^6.0",
"symfony/routing": "^4.4|^5.0|^6.0",
"symfony/config": "^5.4|^6.0",
"symfony/console": "^5.4|^6.0",
"symfony/dependency-injection": "^5.4|^6.0",
"symfony/framework-bundle": "^5.4.24|^6.0",
"symfony/http-foundation": "^5.4|^6.0",
"symfony/http-kernel": "^5.4|^6.0",
"symfony/options-resolver": "^5.4|^6.0",
"symfony/property-info": "^5.4|^6.0",
"symfony/routing": "^5.4|^6.0",
"zircote/swagger-php": "^4.2.15",
"phpdocumentor/reflection-docblock": "^3.1|^4.0|^5.0"
},
"require-dev": {
"sensio/framework-extra-bundle": "^4.4|^5.2|^6.0",
"symfony/asset": "^4.4|^5.2|^6.0",
"symfony/dom-crawler": "^4.4|^5.2|^6.0",
"symfony/browser-kit": "^4.4|^5.2|^6.0",
"symfony/cache": "^4.4|^5.2|^6.0",
"symfony/form": "^4.4|^5.2|^6.0",
"symfony/phpunit-bridge": "^5.2",
"symfony/property-access": "^4.4|^5.2|^6.0",
"symfony/serializer": "^4.4|^5.2|^6.0",
"symfony/stopwatch": "^4.4|^5.2|^6.0",
"symfony/templating": "^4.4|^5.2|^6.0",
"symfony/twig-bundle": "^4.4|^5.2|^6.0",
"symfony/validator": "^4.4|^5.2|^6.0",
"sensio/framework-extra-bundle": "^5.4|^6.0",
"symfony/asset": "^5.4|^6.0",
"symfony/dom-crawler": "^5.4|^6.0",
"symfony/browser-kit": "^5.4|^6.0",
"symfony/cache": "^5.4|^6.0",
"symfony/form": "^5.4|^6.0",
"symfony/phpunit-bridge": "^5.4.23",
"symfony/property-access": "^5.4|^6.0",
"symfony/serializer": "^5.4|^6.0",
"symfony/stopwatch": "^5.4|^6.0",
"symfony/templating": "^5.4|^6.0",
"symfony/twig-bundle": "^5.4|^6.0",
"symfony/validator": "^5.4|^6.0",

"api-platform/core": "^2.7.0|^3@dev",
"symfony/deprecation-contracts": "^2.1|^3",
Expand Down

0 comments on commit b9fc542

Please sign in to comment.