From 9abb5d3eadd52404b385d987f5f56fbc4b694563 Mon Sep 17 00:00:00 2001 From: tleon Date: Thu, 15 Feb 2024 16:48:14 +0100 Subject: [PATCH] chore(api): list integration test --- src/ApiPlatform/Resources/ApiClient.php | 6 -- src/ApiPlatform/Resources/CartRule.php | 2 - src/ApiPlatform/Resources/FoundProduct.php | 2 - src/ApiPlatform/Resources/Hook.php | 10 +-- tests/Integration/ApiPlatform/GetHookTest.php | 70 +++++++++++++++++++ 5 files changed, 72 insertions(+), 18 deletions(-) diff --git a/src/ApiPlatform/Resources/ApiClient.php b/src/ApiPlatform/Resources/ApiClient.php index 5580062..77ab06a 100644 --- a/src/ApiPlatform/Resources/ApiClient.php +++ b/src/ApiPlatform/Resources/ApiClient.php @@ -39,8 +39,6 @@ use PrestaShopBundle\ApiPlatform\Metadata\CQRSDelete; use PrestaShopBundle\ApiPlatform\Metadata\CQRSGet; use PrestaShopBundle\ApiPlatform\Metadata\CQRSPartialUpdate; -use PrestaShopBundle\ApiPlatform\Processor\CommandProcessor; -use PrestaShopBundle\ApiPlatform\Provider\QueryProvider; #[ApiResource( operations: [ @@ -67,7 +65,6 @@ ], ], ], - provider: QueryProvider::class, CQRSQuery: GetApiClientForEditing::class, scopes: ['api_client_read'] ), @@ -95,20 +92,17 @@ ], ], output: false, - provider: QueryProvider::class, CQRSQuery: DeleteApiClientCommand::class, scopes: ['api_client_write'] ), new CQRSCreate( uriTemplate: '/api-client', - processor: CommandProcessor::class, CQRSCommand: AddApiClientCommand::class, scopes: ['api_client_write'] ), new CQRSPartialUpdate( uriTemplate: '/api-client/{apiClientId}', read: false, - processor: CommandProcessor::class, CQRSCommand: EditApiClientCommand::class, CQRSQuery: GetApiClientForEditing::class, scopes: ['api_client_write'] diff --git a/src/ApiPlatform/Resources/CartRule.php b/src/ApiPlatform/Resources/CartRule.php index 693af79..488a7da 100644 --- a/src/ApiPlatform/Resources/CartRule.php +++ b/src/ApiPlatform/Resources/CartRule.php @@ -31,13 +31,11 @@ use ApiPlatform\Metadata\ApiResource; use PrestaShop\PrestaShop\Core\Domain\CartRule\Command\EditCartRuleCommand; use PrestaShopBundle\ApiPlatform\Metadata\CQRSPartialUpdate; -use PrestaShopBundle\ApiPlatform\Processor\CommandProcessor; #[ApiResource( operations: [ new CQRSPartialUpdate( uriTemplate: '/cart-rule', - processor: CommandProcessor::class, CQRSCommand: EditCartRuleCommand::class ), ], diff --git a/src/ApiPlatform/Resources/FoundProduct.php b/src/ApiPlatform/Resources/FoundProduct.php index b42aab6..ebb6cf6 100644 --- a/src/ApiPlatform/Resources/FoundProduct.php +++ b/src/ApiPlatform/Resources/FoundProduct.php @@ -32,7 +32,6 @@ use ApiPlatform\Metadata\ApiResource; use PrestaShop\PrestaShop\Core\Domain\Product\Query\SearchProducts; use PrestaShopBundle\ApiPlatform\Metadata\CQRSQueryCollection; -use PrestaShopBundle\ApiPlatform\Provider\QueryProvider; #[ApiResource( operations: [ @@ -74,7 +73,6 @@ ], ], ], - provider: QueryProvider::class, CQRSQuery: SearchProducts::class ), ], diff --git a/src/ApiPlatform/Resources/Hook.php b/src/ApiPlatform/Resources/Hook.php index df8895f..8c98dbb 100644 --- a/src/ApiPlatform/Resources/Hook.php +++ b/src/ApiPlatform/Resources/Hook.php @@ -36,11 +36,9 @@ use PrestaShop\PrestaShop\Core\Domain\Hook\Query\GetHook; use PrestaShop\PrestaShop\Core\Domain\Hook\Query\GetHookStatus; use PrestaShopBundle\ApiPlatform\Metadata\CQRSGet; -use PrestaShopBundle\ApiPlatform\Metadata\CQRSPartialUpdate; +use PrestaShopBundle\ApiPlatform\Metadata\CQRSUpdate; use PrestaShopBundle\ApiPlatform\Metadata\DQBPaginatedList; -use PrestaShopBundle\ApiPlatform\Processor\CommandProcessor; use PrestaShopBundle\ApiPlatform\Provider\QueryListProvider; -use PrestaShopBundle\ApiPlatform\Provider\QueryProvider; #[ApiResource( operations: [ @@ -68,13 +66,11 @@ ], ], exceptionToStatus: [HookNotFoundException::class => 404], - provider: QueryProvider::class, CQRSQuery: GetHookStatus::class, scopes: ['hook_read'] ), - new CQRSPartialUpdate( + new CQRSUpdate( uriTemplate: '/hook-status', - processor: CommandProcessor::class, CQRSCommand: UpdateHookStatusCommand::class, scopes: ['hook_write'] ), @@ -82,11 +78,9 @@ uriTemplate: '/hooks/{id}', requirements: ['id' => '\d+'], exceptionToStatus: [HookNotFoundException::class => 404], - provider: QueryProvider::class, CQRSQuery: GetHook::class, scopes: ['hook_read'] ), - // PR module + inte module + convertir en custom ce qu'il reste en natif new DQBPaginatedList( uriTemplate: '/hooks', provider: QueryListProvider::class, diff --git a/tests/Integration/ApiPlatform/GetHookTest.php b/tests/Integration/ApiPlatform/GetHookTest.php index 550302b..e6c109f 100644 --- a/tests/Integration/ApiPlatform/GetHookTest.php +++ b/tests/Integration/ApiPlatform/GetHookTest.php @@ -69,4 +69,74 @@ public function testGetHook(): void $hook->delete(); } + + public function testListHooks(): void + { + $hooks = $this->generateHooks(); + $bearerToken = $this->getBearerToken([ + 'hook_read', + 'hook_write', + ]); + + $response = static::createClient()->request('GET', '/api/hooks', ['auth_bearer' => $bearerToken]); + self::assertResponseStatusCodeSame(200); + self::assertCount(50, json_decode($response->getContent())->items); + $totalItems = json_decode($response->getContent())->totalItems; + + $response = static::createClient()->request('GET', '/api/hooks?limit=10', ['auth_bearer' => $bearerToken]); + self::assertResponseStatusCodeSame(200); + self::assertCount(10, json_decode($response->getContent())->items); + + $response = static::createClient()->request('GET', '/api/hooks?limit=1&orderBy=id_hook&sortOrder=desc', ['auth_bearer' => $bearerToken]); + self::assertResponseStatusCodeSame(200); + self::assertCount(1, json_decode($response->getContent())->items); + $returnedHook = json_decode($response->getContent()); + self::assertEquals('id_hook', $returnedHook->orderBy); + self::assertEquals('desc', $returnedHook->sortOrder); + self::assertEquals(1, $returnedHook->limit); + self::assertEquals([], $returnedHook->filters); + self::assertEquals('testHook50', $returnedHook->items[0]->name); + self::assertTrue($returnedHook->items[0]->active); + + $response = static::createClient()->request('GET', '/api/hooks?filters[name]=testHook', ['auth_bearer' => $bearerToken]); + self::assertResponseStatusCodeSame(200); + self::assertCount(50, json_decode($response->getContent())->items); + foreach (json_decode($response->getContent())->items as $key => $item) { + self::assertEquals('testHook' . $key, $item->name); + } + + $newHook = new \Hook(); + $newHook->name = 'testHook51'; + $newHook->active = true; + $newHook->add(); + $hooks[] = $newHook; + + $response = static::createClient()->request('GET', '/api/hooks', ['auth_bearer' => $bearerToken]); + self::assertResponseStatusCodeSame(200); + self::assertEquals($totalItems + 1, json_decode($response->getContent())->totalItems); + + static::createClient()->request('GET', '/api/hooks'); + self::assertResponseStatusCodeSame(401); + + foreach ($hooks as $hook) { + $hook->delete(); + } + } + + /** + * @return \Hook[] + */ + protected function generateHooks(): array + { + $hooks = []; + for ($i = 0; $i <= 50; ++$i) { + $hook = new \Hook(); + $hook->name = 'testHook' . $i; + $hook->active = true; + $hook->add(); + $hooks[] = $hook; + } + + return $hooks; + } }