diff --git a/tests/Api/Admin/AvatarImageTest.php b/tests/Api/Admin/AvatarImageTest.php new file mode 100644 index 00000000000..0a67fa92741 --- /dev/null +++ b/tests/Api/Admin/AvatarImageTest.php @@ -0,0 +1,109 @@ +loadFixturesFromFiles(['authentication/api_administrator.yaml', 'avatar_image.yaml']); + $header = array_merge($this->logInAdminUser('api@example.com'), self::CONTENT_TYPE_HEADER); + + /** @var AvatarImageInterface $avatarImage */ + $avatarImage = $fixtures['avatar_image']; + + $this->client->request( + method: 'GET', + uri: sprintf('/api/v2/admin/avatar-images/%s', $avatarImage->getId()), + server: $header, + ); + + $this->assertResponse( + $this->client->getResponse(), + 'admin/avatar_image/get_an_avatar_image', + Response::HTTP_OK, + ); + } + + /** @test */ + public function it_gets_nothing_if_avatar_image_not_found(): void + { + $this->loadFixturesFromFiles(['authentication/api_administrator.yaml', 'avatar_image.yaml']); + $header = array_merge($this->logInAdminUser('api@example.com'), self::CONTENT_TYPE_HEADER); + + $this->client->request( + method: 'GET', + uri: sprintf('/api/v2/admin/avatar-images/%s', 'wrong input'), + server: $header, + ); + + $response = $this->client->getResponse(); + + $this->assertSame(Response::HTTP_NOT_FOUND, $response->getStatusCode()); + } + + /** @test */ + public function it_creates_an_avatar_image(): void + { + $fixtures = $this->loadFixturesFromFiles(['authentication/api_administrator.yaml', 'avatar_image.yaml']); + $header = array_merge($this->logInAdminUser('api@example.com'), self::CONTENT_TYPE_HEADER); + + /** @var AdminUserInterface $adminUser */ + $adminUser = $fixtures['admin']; + + $this->client->request( + method: 'POST', + uri: '/api/v2/admin/avatar-images', + parameters: [ + 'owner' => sprintf('/api/v2/admin/administrators/%s', $adminUser->getId()), + ], + files: ['file' => $this->getUploadedFile('fixtures/ford.jpg', 'ford.jpg')], + server: $header, + ); + + $response = $this->client->getResponse(); + $this->assertResponse( + $response, + 'admin/avatar_image/post_avatar_image', + Response::HTTP_CREATED, + ); + } + + /** @test */ + public function it_deletes_an_avatar_image(): void + { + $fixtures = $this->loadFixturesFromFiles(['authentication/api_administrator.yaml', 'avatar_image.yaml']); + $header = array_merge($this->logInAdminUser('api@example.com'), self::CONTENT_TYPE_HEADER); + + /** @var AvatarImageInterface $avatarImage */ + $avatarImage = $fixtures['avatar_image']; + + $this->client->request( + method: 'DELETE', + uri: sprintf('/api/v2/admin/avatar-images/%s', $avatarImage->getId()), + server: $header, + ); + + $this->assertResponseCode($this->client->getResponse(), Response::HTTP_NO_CONTENT); + } +} diff --git a/tests/Api/DataFixtures/ORM/avatar_image.yaml b/tests/Api/DataFixtures/ORM/avatar_image.yaml new file mode 100644 index 00000000000..afa2e67bb5b --- /dev/null +++ b/tests/Api/DataFixtures/ORM/avatar_image.yaml @@ -0,0 +1,4 @@ +Sylius\Component\Core\Model\AvatarImage: + avatar_image: + owner: "@admin" + path: "uo/avatar_image.jpg" diff --git a/tests/Api/Responses/admin/avatar_image/get_an_avatar_image.json b/tests/Api/Responses/admin/avatar_image/get_an_avatar_image.json new file mode 100644 index 00000000000..6eab614c4b6 --- /dev/null +++ b/tests/Api/Responses/admin/avatar_image/get_an_avatar_image.json @@ -0,0 +1,8 @@ +{ + "@context": "/api/v2/contexts/AvatarImage", + "@id": "/api/v2/admin/avatar-images/@integer@", + "@type": "AvatarImage", + "id": @integer@, + "path": "uo/avatar_image.jpg", + "owner": "\/api\/v2\/admin\/administrators/@integer@" +} diff --git a/tests/Api/Responses/admin/avatar_image/post_avatar_image.json b/tests/Api/Responses/admin/avatar_image/post_avatar_image.json new file mode 100644 index 00000000000..906944aaf43 --- /dev/null +++ b/tests/Api/Responses/admin/avatar_image/post_avatar_image.json @@ -0,0 +1,8 @@ +{ + "@context": "/api/v2/contexts/AvatarImage", + "@id": "/api/v2/admin/avatar-images/@integer@", + "@type": "AvatarImage", + "id": @integer@, + "path": "@string@\/ford.jpg", + "owner": "\/api\/v2\/admin\/administrators/@integer@" +}