Skip to content

Commit 035aaf0

Browse files
fix issue
1 parent ac3aa70 commit 035aaf0

File tree

2 files changed

+35
-11
lines changed
  • app/code/Magento/CmsUrlRewrite/Plugin/Cms/Model/Store
  • dev/tests/integration/testsuite/Magento/CmsUrlRewrite/Plugin/Cms/Model/Store

2 files changed

+35
-11
lines changed

app/code/Magento/CmsUrlRewrite/Plugin/Cms/Model/Store/View.php

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
namespace Magento\CmsUrlRewrite\Plugin\Cms\Model\Store;
99

10+
use Magento\Cms\Api\Data\PageInterface;
1011
use Magento\Cms\Api\PageRepositoryInterface;
1112
use Magento\CmsUrlRewrite\Model\CmsPageUrlRewriteGenerator;
1213
use Magento\Framework\Api\SearchCriteriaBuilder;
@@ -21,6 +22,8 @@
2122
*/
2223
class View
2324
{
25+
private const ALL_STORE_VIEWS = '0';
26+
2427
/**
2528
* @var UrlPersistInterface
2629
*/
@@ -89,14 +92,27 @@ private function generateCmsPagesUrls(int $storeId): array
8992
{
9093
$rewrites = [];
9194
$urls = [];
92-
$searchCriteria = $this->searchCriteriaBuilder->create();
93-
$cmsPagesCollection = $this->pageRepository->getList($searchCriteria)->getItems();
94-
foreach ($cmsPagesCollection as $page) {
95+
96+
foreach ($this->getCmsPageItems() as $page) {
9597
$page->setStoreId($storeId);
9698
$rewrites[] = $this->cmsPageUrlRewriteGenerator->generate($page);
9799
}
98100
$urls = array_merge($urls, ...$rewrites);
99101

100102
return $urls;
101103
}
104+
105+
/**
106+
* Return cms page items for all store view
107+
*
108+
* @return PageInterface[]
109+
*/
110+
private function getCmsPageItems(): array
111+
{
112+
$searchCriteria = $this->searchCriteriaBuilder->addFilter('store_id', self::ALL_STORE_VIEWS)
113+
->create();
114+
$list = $this->pageRepository->getList($searchCriteria);
115+
116+
return $list->getItems();
117+
}
102118
}

dev/tests/integration/testsuite/Magento/CmsUrlRewrite/Plugin/Cms/Model/Store/ViewTest.php

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
67
declare(strict_types=1);
78

89
namespace Magento\CmsUrlRewrite\Plugin\Cms\Model\Store;
@@ -13,13 +14,14 @@
1314
use Magento\TestFramework\Helper\Bootstrap;
1415
use Magento\UrlRewrite\Model\UrlFinderInterface;
1516
use Magento\UrlRewrite\Service\V1\Data\UrlRewrite;
17+
use PHPUnit\Framework\TestCase;
1618

1719
/**
18-
* Test for plugin which is listening store resource model and on save replace cms page url rewrites
20+
* Test for plugin which is listening store resource model and on save replace cms page url rewrites.
1921
*
2022
* @magentoAppArea adminhtml
2123
*/
22-
class ViewTest extends \PHPUnit\Framework\TestCase
24+
class ViewTest extends TestCase
2325
{
2426
/**
2527
* @var UrlFinderInterface
@@ -49,26 +51,32 @@ protected function setUp()
4951
/**
5052
* Test of replacing cms page url rewrites on create and delete store
5153
*
54+
* @magentoDataFixture Magento/Cms/_files/two_cms_page_with_same_url_for_different_stores.php
5255
* @magentoDataFixture Magento/Cms/_files/pages.php
56+
*
57+
* @return void
5358
*/
54-
public function testUrlRewritesChangesAfterStoreSave()
59+
public function testUrlRewritesChangesAfterStoreSave(): void
5560
{
5661
$storeId = $this->createStore();
57-
$this->assertUrlRewritesCount($storeId, 1);
62+
$this->assertUrlRewritesCount($storeId, 'page100', 1);
63+
$this->assertUrlRewritesCount($storeId, 'page1', 0);
5864
$this->deleteStore($storeId);
59-
$this->assertUrlRewritesCount($storeId, 0);
65+
$this->assertUrlRewritesCount($storeId, 'page100', 0);
6066
}
6167

6268
/**
63-
* Assert url rewrites count by store id
69+
* Assert url rewrites count by store id and request path
6470
*
6571
* @param int $storeId
72+
* @param string $requestPath
6673
* @param int $expectedCount
74+
* @return void
6775
*/
68-
private function assertUrlRewritesCount(int $storeId, int $expectedCount): void
76+
private function assertUrlRewritesCount(int $storeId, string $requestPath, int $expectedCount): void
6977
{
7078
$data = [
71-
UrlRewrite::REQUEST_PATH => 'page100',
79+
UrlRewrite::REQUEST_PATH => $requestPath,
7280
UrlRewrite::STORE_ID => $storeId
7381
];
7482
$urlRewrites = $this->urlFinder->findAllByData($data);

0 commit comments

Comments
 (0)