Skip to content

Commit 03a5fed

Browse files
MC-19585: CMS page redirects to homepage after changing store view
1 parent 64b6465 commit 03a5fed

File tree

3 files changed

+63
-26
lines changed

3 files changed

+63
-26
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
// phpcs:ignore Magento2.Security.IncludeFile
9+
require __DIR__ . '/../../../Magento/Store/_files/second_store.php';
10+
11+
$objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
12+
13+
/** @var $page \Magento\Cms\Model\Page */
14+
$page = $objectManager->create(\Magento\Cms\Model\Page::class);
15+
$page->setTitle('First test page')
16+
->setIdentifier('page1')
17+
->setStores([1])
18+
->setIsActive(1)
19+
->setPageLayout('1column')
20+
->save();
21+
22+
$storeManager = $objectManager->create(\Magento\Store\Model\StoreManagerInterface::class);
23+
$store = $storeManager->getStore('fixture_second_store');
24+
/** @var $page \Magento\Cms\Model\Page */
25+
$page = $objectManager->create(\Magento\Cms\Model\Page::class);
26+
$page->setTitle('Second test page')
27+
->setIdentifier('page1')
28+
->setStores([$store->getId()])
29+
->setIsActive(1)
30+
->setPageLayout('1column')
31+
->save();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
use Magento\Cms\Api\Data\PageInterface;
9+
use Magento\Cms\Api\PageRepositoryInterface;
10+
use Magento\Framework\Api\SearchCriteriaBuilder;
11+
use Magento\TestFramework\Helper\Bootstrap;
12+
13+
$objectManager = Bootstrap::getObjectManager();
14+
15+
/** @var PageRepositoryInterface $pageRepository */
16+
$pageRepository = $objectManager->get(PageRepositoryInterface::class);
17+
18+
/** @var SearchCriteriaBuilder $searchCriteriaBuilder */
19+
$searchCriteriaBuilder = $objectManager->get(SearchCriteriaBuilder::class);
20+
$searchCriteria = $searchCriteriaBuilder->addFilter(PageInterface::IDENTIFIER, 'page1')
21+
->create();
22+
$result = $pageRepository->getList($searchCriteria);
23+
24+
foreach ($result->getItems() as $item) {
25+
$pageRepository->delete($item);
26+
}
27+
28+
// phpcs:ignore Magento2.Security.IncludeFile
29+
require __DIR__ . '/../../../Magento/Store/_files/second_store_rollback.php';

dev/tests/integration/testsuite/Magento/UrlRewrite/Model/StoreSwitcher/RewriteUrlTest.php

Lines changed: 3 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
namespace Magento\UrlRewrite\Model\StoreSwitcher;
99

1010
use Magento\Catalog\Api\ProductRepositoryInterface;
11-
use Magento\Cms\Model\Page;
1211
use Magento\Framework\App\Config\ReinitableConfigInterface;
1312
use Magento\Framework\App\Config\Value;
1413
use Magento\Store\Api\Data\StoreInterface;
@@ -104,15 +103,12 @@ public function testSwitchToExistingPage(): void
104103
/**
105104
* Testing store switching using cms pages with the same url_key but with different page_id
106105
*
107-
* @magentoDataFixture Magento/Cms/_files/pages.php
108-
* @magentoDataFixture Magento/Store/_files/second_store.php
106+
* @magentoDataFixture Magento/Cms/_files/two_cms_page_with_same_url_for_different_stores.php
109107
* @magentoDbIsolation disabled
110108
* @return void
111109
*/
112110
public function testSwitchCmsPageToAnotherStore(): void
113111
{
114-
$storeId = (int)$this->storeManager->getStore('fixture_second_store')->getId();
115-
$this->createCmsPage($storeId);
116112
$fromStore = $this->getStoreByCode('default');
117113
$toStore = $this->getStoreByCode('fixture_second_store');
118114
$redirectUrl = "http://localhost/index.php/page100/";
@@ -151,26 +147,7 @@ private function setBaseUrl(StoreInterface $targetStore): void
151147
*/
152148
private function getStoreByCode(string $storeCode): StoreInterface
153149
{
154-
/** @var StoreRepositoryInterface $storeRepository */
155-
$storeRepository = $this->objectManager->create(StoreRepositoryInterface::class);
156-
return $storeRepository->get($storeCode);
157-
}
158-
159-
/**
160-
* Create cms page for store with store id from parameters
161-
*
162-
* @param int $storeId
163-
* @return void
164-
*/
165-
private function createCmsPage(int $storeId): void
166-
{
167-
/** @var $page \Magento\Cms\Model\Page */
168-
$page = $this->objectManager->create(Page::class);
169-
$page->setTitle('Test cms page')
170-
->setIdentifier('page100')
171-
->setStores([$storeId])
172-
->setIsActive(1)
173-
->setPageLayout('1column')
174-
->save();
150+
/** @var StoreRepositoryInterface */
151+
return $this->storeManager->getStore($storeCode);
175152
}
176153
}

0 commit comments

Comments
 (0)