From 06127039c96c125405cafb22315243c5bec83e80 Mon Sep 17 00:00:00 2001 From: Jan Goralski Date: Mon, 28 Nov 2022 14:58:31 +0100 Subject: [PATCH] [API][ShippingCategory] Update mapping --- .../config/api_resources/ShippingCategory.xml | 6 + .../config/serialization/ShippingCategory.xml | 3 - tests/Api/Admin/ShippingCategoriesTest.php | 131 ++++++++++++++++++ .../DataFixtures/ORM/shipping_category.yaml | 8 ++ .../get_shipping_categories_response.json | 26 ++++ .../get_shipping_category_response.json | 10 ++ .../post_shipping_category_response.json | 10 ++ .../put_shipping_category_response.json | 10 ++ 8 files changed, 201 insertions(+), 3 deletions(-) create mode 100644 tests/Api/Admin/ShippingCategoriesTest.php create mode 100644 tests/Api/DataFixtures/ORM/shipping_category.yaml create mode 100644 tests/Api/Responses/Expected/admin/shipping_category/get_shipping_categories_response.json create mode 100644 tests/Api/Responses/Expected/admin/shipping_category/get_shipping_category_response.json create mode 100644 tests/Api/Responses/Expected/admin/shipping_category/post_shipping_category_response.json create mode 100644 tests/Api/Responses/Expected/admin/shipping_category/put_shipping_category_response.json diff --git a/src/Sylius/Bundle/ApiBundle/Resources/config/api_resources/ShippingCategory.xml b/src/Sylius/Bundle/ApiBundle/Resources/config/api_resources/ShippingCategory.xml index f1b2f48bbc..ed8d0f675a 100644 --- a/src/Sylius/Bundle/ApiBundle/Resources/config/api_resources/ShippingCategory.xml +++ b/src/Sylius/Bundle/ApiBundle/Resources/config/api_resources/ShippingCategory.xml @@ -33,6 +33,9 @@ admin:shipping_category:create + + admin:shipping_category:read + @@ -49,6 +52,9 @@ admin:shipping_category:update + + admin:shipping_category:read + diff --git a/src/Sylius/Bundle/ApiBundle/Resources/config/serialization/ShippingCategory.xml b/src/Sylius/Bundle/ApiBundle/Resources/config/serialization/ShippingCategory.xml index b24784b976..b560733692 100644 --- a/src/Sylius/Bundle/ApiBundle/Resources/config/serialization/ShippingCategory.xml +++ b/src/Sylius/Bundle/ApiBundle/Resources/config/serialization/ShippingCategory.xml @@ -16,9 +16,6 @@ xsi:schemaLocation="http://symfony.com/schema/dic/serializer-mapping https://symfony.com/schema/dic/serializer-mapping/serializer-mapping-1.0.xsd" > - - admin:shipping_category:read - admin:shipping_category:read admin:shipping_category:create diff --git a/tests/Api/Admin/ShippingCategoriesTest.php b/tests/Api/Admin/ShippingCategoriesTest.php new file mode 100644 index 0000000000..15ce7d01d5 --- /dev/null +++ b/tests/Api/Admin/ShippingCategoriesTest.php @@ -0,0 +1,131 @@ +loadFixturesFromFiles(['authentication/api_administrator.yaml', 'shipping_category.yaml']); + $header = $this->getLoggedHeader(); + + /** @var ShippingCategoryInterface $shippingCategory */ + $shippingCategory = $fixtures['shipping_category_special']; + + $this->client->request( + 'GET', + sprintf('/api/v2/admin/shipping-categories/%s', $shippingCategory->getCode()), + [], + [], + $header, + ); + + $this->assertResponse( + $this->client->getResponse(), + 'admin/shipping_category/get_shipping_category_response', + Response::HTTP_OK, + ); + } + + /** @test */ + public function it_gets_shipping_categories(): void + { + $this->loadFixturesFromFiles(['authentication/api_administrator.yaml', 'shipping_category.yaml']); + $header = $this->getLoggedHeader(); + + $this->client->request( + 'GET', + '/api/v2/admin/shipping-categories', + [], + [], + $header, + ); + + $this->assertResponse( + $this->client->getResponse(), + 'admin/shipping_category/get_shipping_categories_response', + Response::HTTP_OK, + ); + } + + /** @test */ + public function it_creates_a_shipping_category(): void + { + $this->loadFixturesFromFiles(['authentication/api_administrator.yaml']); + $header = $this->getLoggedHeader(); + + $this->client->request( + 'POST', + '/api/v2/admin/shipping-categories', + [], + [], + $header, + json_encode([ + 'code' => 'ultra', + 'name' => 'Ultra', + ], JSON_THROW_ON_ERROR), + ); + + $this->assertResponse( + $this->client->getResponse(), + 'admin/shipping_category/post_shipping_category_response', + Response::HTTP_CREATED, + ); + } + + /** @test */ + public function it_updates_an_existing_shipping_category(): void + { + $fixtures = $this->loadFixturesFromFiles(['authentication/api_administrator.yaml', 'shipping_category.yaml']); + + /** @var ShippingCategoryInterface $shippingCategory */ + $shippingCategory = $fixtures['shipping_category_default']; + + $header = $this->getLoggedHeader(); + + $this->client->request( + 'PUT', + '/api/v2/admin/shipping-categories/' . $shippingCategory->getCode(), + [], + [], + $header, + json_encode([ + 'name' => 'Not so default', + ], JSON_THROW_ON_ERROR), + ); + + $this->assertResponse( + $this->client->getResponse(), + 'admin/shipping_category/put_shipping_category_response', + Response::HTTP_OK, + ); + } + + private function getLoggedHeader(): array + { + $token = $this->logInAdminUser('api@example.com'); + $authorizationHeader = self::$kernel->getContainer()->getParameter('sylius.api.authorization_header'); + $header['HTTP_' . $authorizationHeader] = 'Bearer ' . $token; + + return array_merge($header, self::CONTENT_TYPE_HEADER); + } +} diff --git a/tests/Api/DataFixtures/ORM/shipping_category.yaml b/tests/Api/DataFixtures/ORM/shipping_category.yaml new file mode 100644 index 0000000000..851dae9627 --- /dev/null +++ b/tests/Api/DataFixtures/ORM/shipping_category.yaml @@ -0,0 +1,8 @@ +Sylius\Component\Shipping\Model\ShippingCategory: + shipping_category_default: + code: 'default' + name: 'Default' + shipping_category_special: + code: 'special' + name: 'Special' + description: 'For special care' diff --git a/tests/Api/Responses/Expected/admin/shipping_category/get_shipping_categories_response.json b/tests/Api/Responses/Expected/admin/shipping_category/get_shipping_categories_response.json new file mode 100644 index 0000000000..2c827a17d6 --- /dev/null +++ b/tests/Api/Responses/Expected/admin/shipping_category/get_shipping_categories_response.json @@ -0,0 +1,26 @@ +{ + "@context": "\/api\/v2\/contexts\/ShippingCategory", + "@id": "\/api\/v2\/admin\/shipping-categories", + "@type": "hydra:Collection", + "hydra:member": [ + { + "@id": "\/api\/v2\/admin\/shipping-categories\/default", + "@type": "ShippingCategory", + "code": "default", + "name": "Default", + "description": null, + "createdAt": @date@, + "updatedAt": @date@ + }, + { + "@id": "\/api\/v2\/admin\/shipping-categories\/special", + "@type": "ShippingCategory", + "code": "special", + "name": "Special", + "description": "For special care", + "createdAt": @date@, + "updatedAt": @date@ + } + ], + "hydra:totalItems": 2 +} diff --git a/tests/Api/Responses/Expected/admin/shipping_category/get_shipping_category_response.json b/tests/Api/Responses/Expected/admin/shipping_category/get_shipping_category_response.json new file mode 100644 index 0000000000..fdab8f0f01 --- /dev/null +++ b/tests/Api/Responses/Expected/admin/shipping_category/get_shipping_category_response.json @@ -0,0 +1,10 @@ +{ + "@context": "\/api\/v2\/contexts\/ShippingCategory", + "@id": "\/api\/v2\/admin\/shipping-categories\/special", + "@type": "ShippingCategory", + "code": "special", + "name": "Special", + "description": "For special care", + "createdAt": @date@, + "updatedAt": @date@ +} diff --git a/tests/Api/Responses/Expected/admin/shipping_category/post_shipping_category_response.json b/tests/Api/Responses/Expected/admin/shipping_category/post_shipping_category_response.json new file mode 100644 index 0000000000..2e9d919df6 --- /dev/null +++ b/tests/Api/Responses/Expected/admin/shipping_category/post_shipping_category_response.json @@ -0,0 +1,10 @@ +{ + "@context": "\/api\/v2\/contexts\/ShippingCategory", + "@id": "\/api\/v2\/admin\/shipping-categories\/ultra", + "@type": "ShippingCategory", + "code": "ultra", + "name": "Ultra", + "description": null, + "createdAt": @date@, + "updatedAt": @date@ +} diff --git a/tests/Api/Responses/Expected/admin/shipping_category/put_shipping_category_response.json b/tests/Api/Responses/Expected/admin/shipping_category/put_shipping_category_response.json new file mode 100644 index 0000000000..2c63a30345 --- /dev/null +++ b/tests/Api/Responses/Expected/admin/shipping_category/put_shipping_category_response.json @@ -0,0 +1,10 @@ +{ + "@context": "\/api\/v2\/contexts\/ShippingCategory", + "@id": "\/api\/v2\/admin\/shipping-categories\/default", + "@type": "ShippingCategory", + "code": "default", + "name": "Not so default", + "description": null, + "createdAt": @date@, + "updatedAt": @date@ +}