Skip to content

Commit 42e7daf

Browse files
committed
MC-37542: Create automated test for "[API] Create CMS page using API service"
1 parent 8dc9c1a commit 42e7daf

File tree

1 file changed

+24
-17
lines changed

1 file changed

+24
-17
lines changed

dev/tests/api-functional/testsuite/Magento/Cms/Api/PageRepositoryTest.php

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use Magento\Authorization\Model\RulesFactory;
1414
use Magento\Cms\Api\Data\PageInterface;
1515
use Magento\Cms\Api\Data\PageInterfaceFactory;
16+
use Magento\Cms\Model\ResourceModel\Page as PageResource;
1617
use Magento\Cms\Ui\Component\DataProvider as CmsDataProvider;
1718
use Magento\Framework\Api\DataObjectHelper;
1819
use Magento\Framework\Api\FilterBuilder;
@@ -85,7 +86,7 @@ class PageRepositoryTest extends WebapiAbstract
8586
private $adminTokens;
8687

8788
/**
88-
* @var array
89+
* @var PageInterface[]
8990
*/
9091
private $createdPages = [];
9192

@@ -110,9 +111,9 @@ class PageRepositoryTest extends WebapiAbstract
110111
private $cmsUiDataProvider;
111112

112113
/**
113-
* @var GetPageByIdentifierInterface
114+
* @var PageResource
114115
*/
115-
private $getPageByIdentifier;
116+
private $pageResource;
116117

117118
/**
118119
* @inheritdoc
@@ -137,7 +138,7 @@ protected function setUp(): void
137138
'requestFieldName' => 'id',
138139
]
139140
);
140-
$this->getPageByIdentifier = $this->objectManager->get(GetPageByIdentifierInterface::class);
141+
$this->pageResource = $this->objectManager->get(PageResource::class);
141142
}
142143

143144
/**
@@ -151,7 +152,9 @@ protected function tearDown(): void
151152
}
152153

153154
foreach ($this->createdPages as $page) {
154-
$this->pageRepository->delete($page);
155+
if ($page->getId()) {
156+
$this->pageRepository->delete($page);
157+
}
155158
}
156159
}
157160

@@ -195,7 +198,7 @@ public function testGetByStores(string $requestStore): void
195198
{
196199
$newStoreId = $this->getStoreIdByRequestStore($requestStore);
197200
$this->updatePage('page100', 0, ['store_id' => $newStoreId]);
198-
$page = $this->getPageByIdentifier->execute('page100', $newStoreId);
201+
$page = $this->loadPageByIdentifier('page100', $newStoreId);
199202
$expectedData = array_intersect_key(
200203
$this->dataObjectProcessor->buildOutputDataArray($page, PageInterface::class),
201204
$this->getPageRequestData()['page']
@@ -257,7 +260,10 @@ public function testCreateByStores(string $requestStore): void
257260
$requestData = $this->getPageRequestData();
258261

259262
$page = $this->_webApiCall($serviceInfo, $requestData, null, $requestStore);
260-
$this->currentPage = $this->getPageByIdentifier($requestData['page'][PageInterface::IDENTIFIER], $newStoreId);
263+
$this->createdPages[] = $this->loadPageByIdentifier(
264+
$requestData['page'][PageInterface::IDENTIFIER],
265+
$newStoreId
266+
);
261267
$this->assertResponseData($page, $requestData['page']);
262268
$pageGridData = $this->getPageGridDataByStoreCode($requestStore);
263269
$this->assertTrue(
@@ -370,7 +376,10 @@ public function testUpdateByStores(string $requestStore): void
370376
$requestData = $this->getPageRequestData();
371377

372378
$page = $this->_webApiCall($serviceInfo, $requestData, null, $requestStore);
373-
$this->currentPage = $this->getPageByIdentifier($requestData['page'][PageInterface::IDENTIFIER], $newStoreId);
379+
$this->createdPages[] = $this->loadPageByIdentifier(
380+
$requestData['page'][PageInterface::IDENTIFIER],
381+
$newStoreId
382+
);
374383
$this->assertResponseData($page, $requestData['page']);
375384
$pageGridData = $this->getPageGridDataByStoreCode($requestStore);
376385
$this->assertTrue(
@@ -768,7 +777,7 @@ private function isPageInArray(array $pageGridData, int $pageId): bool
768777
*/
769778
private function updatePage(string $pageIdentifier, int $storeId, array $pageData): PageInterface
770779
{
771-
$page = $this->getPageByIdentifier->execute($pageIdentifier, $storeId);
780+
$page = $this->loadPageByIdentifier($pageIdentifier, $storeId);
772781
$page->addData($pageData);
773782

774783
return $this->pageRepository->save($page);
@@ -839,19 +848,17 @@ private function getPageGridDataByStoreCode(string $requestStore): array
839848
}
840849

841850
/**
842-
* Get page by identifier without throw exception
851+
* Load page by identifier and store id
843852
*
844853
* @param string $identifier
845854
* @param int $storeId
846-
* @return PageInterface|null
855+
* @return PageInterface
847856
*/
848-
private function getPageByIdentifier(string $identifier, int $storeId): ?PageInterface
857+
private function loadPageByIdentifier(string $identifier, int $storeId): PageInterface
849858
{
850-
$page = null;
851-
try {
852-
$page = $this->getPageByIdentifier->execute($identifier, $storeId);
853-
} catch (NoSuchEntityException $exception) {
854-
}
859+
$page = $this->pageFactory->create();
860+
$page->setStoreId($storeId);
861+
$this->pageResource->load($page, $identifier, PageInterface::IDENTIFIER);
855862

856863
return $page;
857864
}

0 commit comments

Comments
 (0)