From 73614b757a19f24d881cdb06747c3612939fc988 Mon Sep 17 00:00:00 2001 From: AlexP Date: Mon, 20 May 2024 15:32:59 +0500 Subject: [PATCH] STA-962 | fixes --- .../Controller/NewsControllerTests.php | 158 +++++++++++++----- .../Controller/RestaurantsControllerTests.php | 128 +++++++++++++- 2 files changed, 237 insertions(+), 49 deletions(-) diff --git a/app/tests/NewsTests/Controller/NewsControllerTests.php b/app/tests/NewsTests/Controller/NewsControllerTests.php index df1b1b1..09c41ca 100644 --- a/app/tests/NewsTests/Controller/NewsControllerTests.php +++ b/app/tests/NewsTests/Controller/NewsControllerTests.php @@ -2,7 +2,18 @@ namespace App\Tests\NewsTests\Controller; +use App\News\Collection\NewsCategoryCollection; +use App\News\Dto\NewsCategoryDto; +use App\News\Dto\NewsDetailElementDto; +use App\News\Dto\NewsFilterVariantsDto; +use App\News\Dto\NewsListDto; +use App\News\Dto\NewsListingElementDto; +use App\Shared\Collection\ListingCollection; +use App\Shared\Dto\FileDto; +use App\Shared\Dto\PaginationDto; +use DateTimeImmutable; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; +use Symfony\Component\HttpFoundation\JsonResponse; class NewsControllerTests extends WebTestCase { @@ -14,14 +25,30 @@ class NewsControllerTests extends WebTestCase 'GET', '/api/v1/news/00000000-0000-0000-0000-000000000000' ); - $data = $client->getResponse()->getContent(); + self::assertResponseIsSuccessful(); /** Проверка получемых новостей */ - self::assertStringContainsString( - '"id":"00000000-0000-0000-0000-000000000000","name":"news1","description":"Preview text","createAt":"17.05.2024","text":"Detail text","image":{"id":"00000000-0000-0000-0000-000000000000","name":"file1","description":"fileDescription","size":1024,"type":"png","url":"\/somewhere\/"', - $data, + self::assertSame( + (new JsonResponse( + new NewsDetailElementDto( + '00000000-0000-0000-0000-000000000000', + 'news1', + 'Preview text', + (new DateTimeImmutable())->format('d.m.Y'), + 'Detail text', + new FileDto( + '00000000-0000-0000-0000-000000000000', + 'file1', + 'fileDescription', + 1024, + 'png', + '/somewhere/' + ), + ) + ))->getContent(), + $client->getResponse()->getContent(), 'Полученная детальная новость инккоректена' ); } @@ -33,7 +60,6 @@ class NewsControllerTests extends WebTestCase 'GET', '/api/v1/news/00000000-0000-0000-0000-000000000005' ); - $data = $client->getResponse()->getContent(); self::assertResponseStatusCodeSame(404); } @@ -52,33 +78,62 @@ class NewsControllerTests extends WebTestCase { $client = static::createClient(); $client->request('GET', '/api/v1/news/'); - $data = $client->getResponse()->getContent(); self::assertResponseIsSuccessful(); - /** Проверка пагинации */ - self::assertStringContainsString( - '"pagination":{"currentPage":1,"pages":1,"pageSize":12}', - $data, - 'Пагинация инкорректна при пустом реквесте' + $testResponse = new JsonResponse( + new NewsListDto( + new PaginationDto(1, 1, 12), + new ListingCollection( + [ + new NewsListingElementDto( + '00000000-0000-0000-0000-000000000000', + 'news1', + (new DateTimeImmutable())->format('d.m.Y'), + 'api/v1/news/00000000-0000-0000-0000-000000000000', + 'Preview text', + new FileDto( + '00000000-0000-0000-0000-000000000000', + 'file1', + 'fileDescription', + 1024, + 'png', + '/somewhere/' + ), + ), + new NewsListingElementDto( + '00000000-0000-0000-0000-000000000001', + 'news2', + (new DateTimeImmutable())->format('d.m.Y'), + 'api/v1/news/00000000-0000-0000-0000-000000000001', + null, + null, + ), + ], + ), + new NewsFilterVariantsDto( + new NewsCategoryCollection( + [ + new NewsCategoryDto( + '00000000-0000-0000-0000-000000000000', + 'newsCategory1', + 'newsCategory_1', + ), + new NewsCategoryDto( + '00000000-0000-0000-0000-000000000001', + 'newsCategory2', + 'newsCategory_2', + ), + ] + ), + ), + ), ); - /** Проверка получемых новостей */ - self::assertStringContainsString( - '"list":[{"id":"00000000-0000-0000-0000-000000000000","name":"news1","detailLink":"api\/v1\/news\/00000000-0000-0000-0000-000000000000","createAt":"17.05.2024","description":"Preview text","image":{"id":"00000000-0000-0000-0000-000000000000","name":"file1","description":"fileDescription","size":1024,"type":"png","url":"\/somewhere\/"}},{"id":"00000000-0000-0000-0000-000000000001","name":"news2","detailLink":"api\/v1\/news\/00000000-0000-0000-0000-000000000001","createAt":"17.05.2024","description":null,"image":null}]', - $data, - 'Полученный список новостей инккоректен при пустом реквесте' - ); - - /** Проверка фильтров */ - self::assertStringContainsString( - '"filterVariants"' . - ':{"category":[{"id":"00000000-0000-0000-0000-000000000000",' . - '"name":"newsCategory1","code":"newsCategory_1"},' . - '{"id":"00000000-0000-0000-0000-000000000001",' . - '"name":"newsCategory2","code":"newsCategory_2"}]}', - $data, - 'Пагинация инкорректна при пустом реквесте' + self::assertSame( + $testResponse->getContent(), + $client->getResponse()->getContent(), + 'Полученное тело респонза неверно' ); } @@ -92,9 +147,9 @@ class NewsControllerTests extends WebTestCase /** Проверка пагинации */ self::assertStringContainsString( - '"pagination":{"currentPage":1,"pages":1,"pageSize":12}', + (new JsonResponse(new PaginationDto(1, 1, 12)))->getContent(), $data, - 'Пагинация инкорректна при негативных значениях' + 'Пагинация инкоректна' ); } @@ -108,9 +163,9 @@ class NewsControllerTests extends WebTestCase /** Проверка пагинации */ self::assertStringContainsString( - '"pagination":{"currentPage":1,"pages":1,"pageSize":12}', + (new JsonResponse(new PaginationDto(1, 1, 12)))->getContent(), $data, - 'Пагинация инкорректна при позитивных значениях' + 'Пагинация инкоректна' ); } @@ -125,19 +180,38 @@ class NewsControllerTests extends WebTestCase self::assertResponseIsSuccessful(); + /** Проверка получемых новостей */ self::assertStringNotContainsString( - '"list":[{"id":"00000000-0000-0000-0000-000000000000",' . - '"name":"news1","createAt":"2024-05-15 09:55:45",' . - '"detailLink":"api\/v1\/news\/00000000-0000-0000-0000-000000000000"' . - ',"description":"Preview text",' . - '"image":{"id":"00000000-0000-0000-0000-000000000000",' . - '"name":"file1","description":"fileDescription","size":1024,' . - '"type":"png","url":"\/somewhere\/"}},' . - '{"id":"00000000-0000-0000-0000-000000000001",' . - '"name":"news2","createAt":"2024-05-15 09:55:45",' . - '"detailLink":"api\/v1\/news\/00000000-0000-0000-0000-000000000001",' . - '"description":null,"image":null}]', + (new JsonResponse( + new ListingCollection( + [ + new NewsListingElementDto( + '00000000-0000-0000-0000-000000000000', + 'news1', + (new DateTimeImmutable())->format('d.m.Y'), + 'api/v1/news/00000000-0000-0000-0000-000000000000', + 'Preview text', + new FileDto( + '00000000-0000-0000-0000-000000000000', + 'file1', + 'fileDescription', + 1024, + 'png', + '/somewhere/', + ), + ), + new NewsListingElementDto( + '00000000-0000-0000-0000-000000000001', + 'news2', + (new DateTimeImmutable())->format('d.m.Y'), + 'api/v1/news/00000000-0000-0000-0000-000000000001', + null, + null, + ), + ] + ) + ))->getContent(), $data, 'Полученный список новостей инккоректен при правильном фильтре' ); diff --git a/app/tests/RestaurantTests/Controller/RestaurantsControllerTests.php b/app/tests/RestaurantTests/Controller/RestaurantsControllerTests.php index 8e020e7..6374fb4 100644 --- a/app/tests/RestaurantTests/Controller/RestaurantsControllerTests.php +++ b/app/tests/RestaurantTests/Controller/RestaurantsControllerTests.php @@ -2,7 +2,22 @@ namespace App\Tests\RestaurantTests\Controller; +use App\Restaurants\Collection\KitchenCollection; +use App\Restaurants\Collection\RestaurantTypeCollection; +use App\Restaurants\Collection\TagCollection; +use App\Restaurants\Dto\KitchenTypeDto; +use App\Restaurants\Dto\RestaurantDetailElementDto; +use App\Restaurants\Dto\RestaurantFilterVariantsDto; +use App\Restaurants\Dto\RestaurantListingElementDto; +use App\Restaurants\Dto\RestaurantTypeDto; +use App\Restaurants\Dto\TagDto; +use App\Shared\Collection\FileCollection; +use App\Shared\Collection\ListingCollection; +use App\Shared\Collection\StringCollection; +use App\Shared\Dto\FileDto; +use App\Shared\Dto\PaginationDto; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; +use Symfony\Component\HttpFoundation\JsonResponse; class RestaurantsControllerTests extends WebTestCase { @@ -18,8 +33,56 @@ class RestaurantsControllerTests extends WebTestCase self::assertResponseIsSuccessful(); - self::assertStringContainsString( - '"id":"00000000-0000-0000-0000-000000000000","name":"Restaurant1","code":"restaurant_1","coordinates":"0.0.0.0","type":{"id":"00000000-0000-0000-0000-000000000001","name":"Type2","code":"type_2"},"check":"check1","check_info":"check1Info","kitchen":[{"id":"00000000-0000-0000-0000-000000000000","name":"Kitchen1","code":"kitchen_1"}],"phone":{"phone1":"+7000000000"},"email":{"email":"base@gmail.com"},"address":{"address":"somewhere"},"tags":[{"name":"setTags1","list":["tag1","tag2","tag3"]},{"name":"setTags2","list":["tag1","tag2","tag3"]}],"site":"www.restaurant.ru","image":{"id":"00000000-0000-0000-0000-000000000001","name":"image1","description":"description","size":512,"type":"jpg","url":"\/here\/"},"gallery":[]}', + self::assertSame( + (new JsonResponse( + new RestaurantDetailElementDto( + '00000000-0000-0000-0000-000000000000', + 'Restaurant1', + 'restaurant_1', + '0.0.0.0', + new RestaurantTypeDto( + '00000000-0000-0000-0000-000000000001', + 'Type2', + 'type_2', + ), + 'check1', + 'check1Info', + new KitchenCollection( + [ + new KitchenTypeDto( + '00000000-0000-0000-0000-000000000000', + 'Kitchen1', + 'kitchen_1' + ), + ] + ), + new StringCollection(['phone1' => '+7000000000']), + new StringCollection(['email' => 'base@gmail.com']), + new StringCollection(['address' => 'somewhere']), + new TagCollection( + [ + new TagDto( + 'setTags1', + new StringCollection(['tag1', 'tag2', 'tag3']) + ), + new TagDto( + 'setTags2', + new StringCollection(['tag1', 'tag2', 'tag3']) + ), + ] + ), + 'www.restaurant.ru', + new FileDto( + '00000000-0000-0000-0000-000000000001', + 'image1', + 'description', + 512, + 'jpg', + '/here/' + ), + new FileCollection([]) + ) + ))->getContent(), $data, 'Полученная детальная новость инккоректена' ); @@ -55,21 +118,72 @@ class RestaurantsControllerTests extends WebTestCase /** Проверка пагинации */ self::assertStringContainsString( - '"pagination":{"currentPage":1,"pages":1,"pageSize":12}', + (new JsonResponse(new PaginationDto(1, 1, 12),))->getContent(), $data, 'Пагинация инкорректна при пустом реквесте' ); /** Проверка получемых новостей */ self::assertStringContainsString( - '"list":[{"id":"00000000-0000-0000-0000-000000000000","name":"Restaurant1","detailLink":"api\/v1\/restaurants\/00000000-0000-0000-0000-000000000000","code":"restaurant_1","type":{"id":"00000000-0000-0000-0000-000000000001","name":"Type2","code":"type_2"},"check":"check1","image":{"id":"00000000-0000-0000-0000-000000000001","name":"image1","description":"description","size":512,"type":"jpg","url":"\/here', + (new JsonResponse( + new ListingCollection( + [ + new RestaurantListingElementDto( + '00000000-0000-0000-0000-000000000000', + 'Restaurant1', + 'restaurant_1', + new RestaurantTypeDto( + '00000000-0000-0000-0000-000000000001', + 'Type2', + 'type_2', + ), + 'api/v1/restaurants/00000000-0000-0000-0000-000000000000', + 'check1', + new FileDto( + '00000000-0000-0000-0000-000000000001', + 'image1', + 'description', + 512, + 'jpg', + '/here/' + ), + ), + ] + ) + ))->getContent(), $data, 'Полученный список новостей инккоректен при пустом реквесте' ); /** Проверка фильтров */ self::assertStringContainsString( - '"filterVariants":{"type":[{"id":"00000000-0000-0000-0000-000000000000","name":"Type1","code":"type_1"},{"id":"00000000-0000-0000-0000-000000000001","name":"Type2","code":"type_2"}],"kitchen":[{"id":"00000000-0000-0000-0000-000000000000","name":"Kitchen1","code":"kitchen_1"}]}', + (new JsonResponse( + new RestaurantFilterVariantsDto( + new RestaurantTypeCollection( + [ + new RestaurantTypeDto( + '00000000-0000-0000-0000-000000000000', + 'Type1', + 'type_1', + ), + new RestaurantTypeDto( + '00000000-0000-0000-0000-000000000001', + 'Type2', + 'type_2', + ), + ] + ), + new KitchenCollection( + [ + new KitchenTypeDto( + '00000000-0000-0000-0000-000000000000', + 'Kitchen1', + 'kitchen_1', + ) + ] + ) + ) + ))->getContent(), $data, 'Пагинация инкорректна при пустом реквесте' ); @@ -85,7 +199,7 @@ class RestaurantsControllerTests extends WebTestCase /** Проверка пагинации */ self::assertStringContainsString( - '"pagination":{"currentPage":1,"pages":1,"pageSize":12}', + (new JsonResponse(new PaginationDto(1, 1, 12),))->getContent(), $data, 'Пагинация инкорректна при негативных значениях' ); @@ -101,7 +215,7 @@ class RestaurantsControllerTests extends WebTestCase /** Проверка пагинации */ self::assertStringContainsString( - '"pagination":{"currentPage":1,"pages":1,"pageSize":12}', + (new JsonResponse(new PaginationDto(1, 1, 12),))->getContent(), $data, 'Пагинация инкорректна при позитивных значениях' ); -- GitLab