106 lines
3.1 KiB
PHP
Executable File
106 lines
3.1 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Magento\Cms\Model;
|
|
|
|
use Magento\Cms\Api\GetPageByIdentifierInterface;
|
|
use Magento\Cms\Api\PageRepositoryInterface;
|
|
use Magento\Framework\Exception\CouldNotSaveException;
|
|
use Magento\TestFramework\Helper\Bootstrap;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
/**
|
|
* Test page repo.
|
|
*/
|
|
class PageRepositoryTest extends TestCase
|
|
{
|
|
/**
|
|
* @var PageRepositoryInterface
|
|
*/
|
|
private $repo;
|
|
|
|
/**
|
|
* @var GetPageByIdentifierInterface
|
|
*/
|
|
private $retriever;
|
|
|
|
/**
|
|
* @inheritDoc
|
|
*/
|
|
protected function setUp(): void
|
|
{
|
|
Bootstrap::getObjectManager()->configure([
|
|
'preferences' => [
|
|
\Magento\Cms\Model\Page\CustomLayoutManagerInterface::class =>
|
|
\Magento\TestFramework\Cms\Model\CustomLayoutManager::class
|
|
]
|
|
]);
|
|
$objectManager = Bootstrap::getObjectManager();
|
|
$this->repo = $objectManager->get(PageRepositoryInterface::class);
|
|
$this->retriever = $objectManager->get(GetPageByIdentifierInterface::class);
|
|
}
|
|
|
|
/**
|
|
* Test that the field is deprecated.
|
|
*
|
|
* @throws \Throwable
|
|
* @magentoDataFixture Magento/Cms/_files/pages_with_layout_xml.php
|
|
* @return void
|
|
*/
|
|
public function testSaveUpdateXml(): void
|
|
{
|
|
$page = $this->retriever->execute('test_custom_layout_page_1', 0);
|
|
$page->setTitle($page->getTitle() . 'TEST');
|
|
|
|
//Is successfully saved without changes to the custom layout xml.
|
|
$page = $this->repo->save($page);
|
|
|
|
//New value is not accepted.
|
|
$page->setCustomLayoutUpdateXml('<container name="new_container_for_save_update_xml" />');
|
|
$forbidden = false;
|
|
try {
|
|
$page = $this->repo->save($page);
|
|
} catch (CouldNotSaveException $exception) {
|
|
$forbidden = true;
|
|
}
|
|
$this->assertTrue($forbidden);
|
|
|
|
//New value is not accepted.
|
|
$page->setLayoutUpdateXml('<container name="new_container_for_save_update_xml2" />');
|
|
$forbidden = false;
|
|
try {
|
|
$page = $this->repo->save($page);
|
|
} catch (CouldNotSaveException $exception) {
|
|
$forbidden = true;
|
|
}
|
|
$this->assertTrue($forbidden);
|
|
|
|
//Can be removed
|
|
$page->setCustomLayoutUpdateXml(null);
|
|
$page->setLayoutUpdateXml(null);
|
|
$page = $this->repo->save($page);
|
|
$this->assertEmpty($page->getCustomLayoutUpdateXml());
|
|
$this->assertEmpty($page->getLayoutUpdateXml());
|
|
}
|
|
|
|
/**
|
|
* Verifies that cms page with identifier which duplicates existed route shouldn't be saved
|
|
*
|
|
* @return void
|
|
* @throws \Throwable
|
|
* @magentoDataFixture Magento/Cms/_files/pages.php
|
|
*/
|
|
public function testSaveWithRouteDuplicate(): void
|
|
{
|
|
$page = $this->retriever->execute('page100', 0);
|
|
$page->setIdentifier('customer');
|
|
$this->expectException(CouldNotSaveException::class);
|
|
$this->repo->save($page);
|
|
}
|
|
}
|