From a90efb8db3a76fbb93e426a788de75a6136004d6 Mon Sep 17 00:00:00 2001 From: Grzegorz Sadowski Date: Tue, 7 Nov 2023 11:47:58 +0100 Subject: [PATCH] [API][Admin] Add PUT endpoint for taxon image resource --- .../config/api_resources/TaxonImage.xml | 11 +++++++ .../config/serialization/TaxonImage.xml | 1 + tests/Api/Admin/TaxonImagesTest.php | 30 +++++++++++++++++++ tests/Api/DataFixtures/ORM/taxon_image.yaml | 3 ++ .../taxon_image/put_taxon_image_response.json | 9 ++++++ 5 files changed, 54 insertions(+) create mode 100644 tests/Api/Responses/Expected/admin/taxon_image/put_taxon_image_response.json diff --git a/src/Sylius/Bundle/ApiBundle/Resources/config/api_resources/TaxonImage.xml b/src/Sylius/Bundle/ApiBundle/Resources/config/api_resources/TaxonImage.xml index d982cf5a38..852dc62b9b 100644 --- a/src/Sylius/Bundle/ApiBundle/Resources/config/api_resources/TaxonImage.xml +++ b/src/Sylius/Bundle/ApiBundle/Resources/config/api_resources/TaxonImage.xml @@ -66,6 +66,17 @@ + + PUT + /admin/taxon-images/{id} + + admin:taxon_image:update + + + admin:taxon_image:read + + + DELETE /admin/taxon-images/{id} diff --git a/src/Sylius/Bundle/ApiBundle/Resources/config/serialization/TaxonImage.xml b/src/Sylius/Bundle/ApiBundle/Resources/config/serialization/TaxonImage.xml index dae76de293..29cff9142d 100644 --- a/src/Sylius/Bundle/ApiBundle/Resources/config/serialization/TaxonImage.xml +++ b/src/Sylius/Bundle/ApiBundle/Resources/config/serialization/TaxonImage.xml @@ -30,6 +30,7 @@ admin:taxon_image:read admin:taxon:read + admin:taxon_image:update diff --git a/tests/Api/Admin/TaxonImagesTest.php b/tests/Api/Admin/TaxonImagesTest.php index 8bafb516fa..2796cf5690 100644 --- a/tests/Api/Admin/TaxonImagesTest.php +++ b/tests/Api/Admin/TaxonImagesTest.php @@ -131,6 +131,36 @@ final class TaxonImagesTest extends JsonApiTestCase ); } + /** @test */ + public function it_updates_only_the_type_of_the_existing_taxon_image(): void + { + $fixtures = $this->loadFixturesFromFiles(['authentication/api_administrator.yaml', 'taxon_image.yaml']); + $header = array_merge($this->logInAdminUser('api@example.com'), self::CONTENT_TYPE_HEADER); + + /** @var TaxonImageInterface $taxonImage */ + $taxonImage = $fixtures['taxon_thumbnail']; + + /** @var TaxonInterface $taxon */ + $taxon = $fixtures['taxon_mug']; + + $this->client->request( + method: 'PUT', + uri: sprintf('/api/v2/admin/taxon-images/%s', $taxonImage->getId()), + server: $header, + content: json_encode([ + 'type' => 'logo', + 'owner' => sprintf('/api/v2/admin/taxons/%s', $taxon->getCode()), + 'path' => 'logo.jpg', + ], JSON_THROW_ON_ERROR), + ); + + $this->assertResponse( + $this->client->getResponse(), + 'admin/taxon_image/put_taxon_image_response', + Response::HTTP_OK, + ); + } + /** @test */ public function it_deletes_a_taxon_image(): void { diff --git a/tests/Api/DataFixtures/ORM/taxon_image.yaml b/tests/Api/DataFixtures/ORM/taxon_image.yaml index 3774c7f885..ecbd8eff36 100644 --- a/tests/Api/DataFixtures/ORM/taxon_image.yaml +++ b/tests/Api/DataFixtures/ORM/taxon_image.yaml @@ -3,6 +3,9 @@ Sylius\Component\Core\Model\Taxon: code: 'CATEGORY' currentLocale: 'en_US' images: ['@taxon_thumbnail', '@taxon_banner'] + taxon_mug: + code: 'MUG' + currentLocale: 'en_US' Sylius\Component\Core\Model\TaxonImage: taxon_thumbnail: diff --git a/tests/Api/Responses/Expected/admin/taxon_image/put_taxon_image_response.json b/tests/Api/Responses/Expected/admin/taxon_image/put_taxon_image_response.json new file mode 100644 index 0000000000..c7ad9dc6e5 --- /dev/null +++ b/tests/Api/Responses/Expected/admin/taxon_image/put_taxon_image_response.json @@ -0,0 +1,9 @@ +{ + "@context": "\/api\/v2\/contexts\/TaxonImage", + "@id": "\/api\/v2\/admin\/taxon-images\/@integer@", + "@type": "TaxonImage", + "id": "@integer@", + "owner": "\/api\/v2\/admin\/taxons\/CATEGORY", + "type": "logo", + "path": "uo\/thumbnail.jpg" +}