From 71ada8cffad1d7745fdb4a311cfa9147dbbf9054 Mon Sep 17 00:00:00 2001 From: Jade Bellereau Date: Mon, 1 Feb 2021 16:15:21 +0100 Subject: [PATCH 1/2] fix pagination defaults and add tests --- .../DependencyInjection/ApiPlatformExtension.php | 2 +- .../ApiPlatformExtensionTest.php | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php b/src/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php index bddb5b9455f..05606b9fc09 100644 --- a/src/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php +++ b/src/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php @@ -185,7 +185,7 @@ private function registerCommonConfiguration(ContainerBuilder $container, array $container->setParameter('api_platform.collection.exists_parameter_name', $config['collection']['exists_parameter_name']); $container->setParameter('api_platform.collection.order', $config['defaults']['order'] ?? $config['collection']['order']); $container->setParameter('api_platform.collection.order_parameter_name', $config['collection']['order_parameter_name']); - $container->setParameter('api_platform.collection.pagination.enabled', $this->isConfigEnabled($container, $config['defaults']['pagination_enabled'] ?? $config['collection']['pagination'])); + $container->setParameter('api_platform.collection.pagination.enabled', $config['api_platform']['defaults'] ?? $this->isConfigEnabled($container, $config['collection']['pagination'])); $container->setParameter('api_platform.collection.pagination.partial', $config['defaults']['pagination_partial'] ?? $config['collection']['pagination']['partial']); $container->setParameter('api_platform.collection.pagination.client_enabled', $config['defaults']['pagination_client_enabled'] ?? $config['collection']['pagination']['client_enabled']); $container->setParameter('api_platform.collection.pagination.client_items_per_page', $config['defaults']['pagination_client_items_per_page'] ?? $config['collection']['pagination']['client_items_per_page']); diff --git a/tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php b/tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php index a9b1ae66bc5..6ba57e3241b 100644 --- a/tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php +++ b/tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php @@ -786,6 +786,22 @@ public function testDisabledSwagger() $this->extension->load($config, $containerBuilder); } + public function testPaginationEnabledViaDefaults() + { + $config = self::DEFAULT_CONFIG; + $config['api_platform']['defaults'] = [ + 'attributes' => [ + 'pagination' => true + ], + ]; + + $containerBuilderProphecy = $this->getBaseContainerBuilderProphecy(); + $containerBuilderProphecy->setParameter('api_platform.defaults', ['attributes' => ['pagination' => true]])->shouldBeCalled(); + $containerBuilderProphecy->setParameter('api_platform.defaults', ['attributes' => []])->shouldNotBeCalled(); + $containerBuilder = $containerBuilderProphecy->reveal(); + $this->extension->load($config, $containerBuilder); + } + private function getPartialContainerBuilderProphecy($configuration = null) { $parameterBag = new EnvPlaceholderParameterBag(); From a216e8b01ca4979aa7d6697b5e755beddf32d21b Mon Sep 17 00:00:00 2001 From: Jade Bellereau Date: Tue, 2 Feb 2021 13:00:55 +0100 Subject: [PATCH 2/2] fix typo --- .../DependencyInjection/ApiPlatformExtension.php | 2 +- .../ApiPlatformExtensionTest.php | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php b/src/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php index 05606b9fc09..1a351699f3f 100644 --- a/src/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php +++ b/src/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php @@ -185,7 +185,7 @@ private function registerCommonConfiguration(ContainerBuilder $container, array $container->setParameter('api_platform.collection.exists_parameter_name', $config['collection']['exists_parameter_name']); $container->setParameter('api_platform.collection.order', $config['defaults']['order'] ?? $config['collection']['order']); $container->setParameter('api_platform.collection.order_parameter_name', $config['collection']['order_parameter_name']); - $container->setParameter('api_platform.collection.pagination.enabled', $config['api_platform']['defaults'] ?? $this->isConfigEnabled($container, $config['collection']['pagination'])); + $container->setParameter('api_platform.collection.pagination.enabled', $config['defaults']['pagination_enabled'] ?? $this->isConfigEnabled($container, $config['collection']['pagination'])); $container->setParameter('api_platform.collection.pagination.partial', $config['defaults']['pagination_partial'] ?? $config['collection']['pagination']['partial']); $container->setParameter('api_platform.collection.pagination.client_enabled', $config['defaults']['pagination_client_enabled'] ?? $config['collection']['pagination']['client_enabled']); $container->setParameter('api_platform.collection.pagination.client_items_per_page', $config['defaults']['pagination_client_items_per_page'] ?? $config['collection']['pagination']['client_items_per_page']); diff --git a/tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php b/tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php index 6ba57e3241b..c80ee208fa1 100644 --- a/tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php +++ b/tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php @@ -786,17 +786,21 @@ public function testDisabledSwagger() $this->extension->load($config, $containerBuilder); } - public function testPaginationEnabledViaDefaults() + public function testDisabledPaginationViaDefaults() { $config = self::DEFAULT_CONFIG; $config['api_platform']['defaults'] = [ - 'attributes' => [ - 'pagination' => true - ], + 'pagination_enabled' => false, ]; $containerBuilderProphecy = $this->getBaseContainerBuilderProphecy(); - $containerBuilderProphecy->setParameter('api_platform.defaults', ['attributes' => ['pagination' => true]])->shouldBeCalled(); + $containerBuilderProphecy->setParameter('api_platform.collection.pagination', [ + 'enabled' => false, 'partial' => false, 'client_enabled' => false, 'client_items_per_page' => false, 'client_partial' => false, 'items_per_page' => 30, 'maximum_items_per_page' => null, 'page_parameter_name' => 'page', 'enabled_parameter_name' => 'pagination', 'items_per_page_parameter_name' => 'itemsPerPage', 'partial_parameter_name' => 'partial', ])->shouldBeCalled(); + $containerBuilderProphecy->setParameter('api_platform.collection.pagination', [ + 'enabled' => true, 'partial' => false, 'client_enabled' => false, 'client_items_per_page' => false, 'client_partial' => false, 'items_per_page' => 30, 'maximum_items_per_page' => null, 'page_parameter_name' => 'page', 'enabled_parameter_name' => 'pagination', 'items_per_page_parameter_name' => 'itemsPerPage', 'partial_parameter_name' => 'partial', ])->shouldNotBeCalled(); + $containerBuilderProphecy->setParameter('api_platform.collection.pagination.enabled', false)->shouldBeCalled(); + $containerBuilderProphecy->setParameter('api_platform.collection.pagination.enabled', true)->shouldNotBeCalled(); + $containerBuilderProphecy->setParameter('api_platform.defaults', ['attributes' => ['pagination_enabled' => false]])->shouldBeCalled(); $containerBuilderProphecy->setParameter('api_platform.defaults', ['attributes' => []])->shouldNotBeCalled(); $containerBuilder = $containerBuilderProphecy->reveal(); $this->extension->load($config, $containerBuilder);