Skip to content

Commit 7683486

Browse files
MC-35478: Bug with Company Structure Page
1 parent a30d2c0 commit 7683486

File tree

2 files changed

+27
-10
lines changed

2 files changed

+27
-10
lines changed

app/code/Magento/Cms/Model/PageRepository.php

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
use Magento\Cms\Api\Data\PageInterfaceFactory;
1212
use Magento\Cms\Api\Data\PageSearchResultsInterface;
1313
use Magento\Cms\Api\PageRepositoryInterface;
14-
use Magento\Cms\Model\Api\SearchCriteria\PageCollectionProcessor;
1514
use Magento\Cms\Model\Page\IdentityMap;
1615
use Magento\Cms\Model\ResourceModel\Page as ResourcePage;
1716
use Magento\Cms\Model\ResourceModel\Page\CollectionFactory as PageCollectionFactory;
@@ -123,8 +122,10 @@ public function __construct(
123122
$this->dataObjectProcessor = $dataObjectProcessor;
124123
$this->storeManager = $storeManager;
125124
$this->collectionProcessor = $collectionProcessor ?: $this->getCollectionProcessor();
126-
$this->identityMap = $identityMap ?? ObjectManager::getInstance()->get(IdentityMap::class);
127-
$this->routeConfig = $routeConfig ?? ObjectManager::getInstance()->get(Config::class);
125+
$this->identityMap = $identityMap ?? ObjectManager::getInstance()
126+
->get(IdentityMap::class);
127+
$this->routeConfig = $routeConfig ?? ObjectManager::getInstance()
128+
->get(Config::class);
128129
}
129130

130131
/**
@@ -260,9 +261,9 @@ public function deleteById($pageId)
260261
private function getCollectionProcessor()
261262
{
262263
if (!$this->collectionProcessor) {
263-
$this->collectionProcessor = ObjectManager::getInstance()->get(
264-
PageCollectionProcessor::class
265-
);
264+
// phpstan:ignore "Class Magento\Cms\Model\PageCollectionProcessor not found."
265+
$this->collectionProcessor = ObjectManager::getInstance()
266+
->get(PageCollectionProcessor::class);
266267
}
267268
return $this->collectionProcessor;
268269
}

dev/tests/integration/testsuite/Magento/Cms/Model/PageRepositoryTest.php

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,11 @@ class PageRepositoryTest extends TestCase
3232
/**
3333
* @inheritDoc
3434
*/
35-
protected function setUp()
35+
protected function setUp(): void
3636
{
37-
$this->repo = Bootstrap::getObjectManager()->get(PageRepositoryInterface::class);
38-
$this->retriever = Bootstrap::getObjectManager()->get(GetPageByIdentifierInterface::class);
37+
$objectManager = Bootstrap::getObjectManager();
38+
$this->repo = $objectManager->get(PageRepositoryInterface::class);
39+
$this->retriever = $objectManager->get(GetPageByIdentifierInterface::class);
3940
}
4041

4142
/**
@@ -48,7 +49,7 @@ protected function setUp()
4849
public function testSaveUpdateXml(): void
4950
{
5051
$page = $this->retriever->execute('test_custom_layout_page_1', 0);
51-
$page->setTitle($page->getTitle() .'TEST');
52+
$page->setTitle($page->getTitle() . 'TEST');
5253

5354
//Is successfully saved without changes to the custom layout xml.
5455
$page = $this->repo->save($page);
@@ -80,4 +81,19 @@ public function testSaveUpdateXml(): void
8081
$this->assertEmpty($page->getCustomLayoutUpdateXml());
8182
$this->assertEmpty($page->getLayoutUpdateXml());
8283
}
84+
85+
/**
86+
* Verifies that cms page with identifier which duplicates existed route shouldn't be saved
87+
*
88+
* @return void
89+
* @throws \Throwable
90+
* @magentoDataFixture Magento/Cms/_files/pages.php
91+
*/
92+
public function testSaveWithRouteDuplicate(): void
93+
{
94+
$page = $this->retriever->execute('page100', 0);
95+
$page->setIdentifier('customer');
96+
$this->expectException(CouldNotSaveException::class);
97+
$this->repo->save($page);
98+
}
8399
}

0 commit comments

Comments
 (0)