_objectManager->configure([
'preferences' => [
CustomLayoutManagerInterface::class => CustomLayoutManager::class,
]
]);
$this->pageRetriever = $this->_objectManager->get(GetPageByIdentifierInterface::class);
}
public function testViewAction()
{
$this->dispatch('/enable-cookies');
$this->assertStringContainsString('What are Cookies?', $this->getResponse()->getBody());
}
public function testViewRedirectWithTrailingSlash()
{
$this->dispatch('/enable-cookies/');
$code = $this->getResponse()->getStatusCode();
$location = $this->getResponse()->getHeader('Location')->getFieldValue();
$this->assertEquals(301, $code, 'Invalid response code');
$this->assertStringEndsWith('/enable-cookies', $location, 'Invalid location header');
}
/**
* Test \Magento\Cms\Block\Page::_addBreadcrumbs
*/
public function testAddBreadcrumbs()
{
$this->dispatch('/enable-cookies');
$layout = $this->_objectManager->get(LayoutInterface::class);
$breadcrumbsBlock = $layout->getBlock('breadcrumbs');
$this->assertStringContainsString($breadcrumbsBlock->toHtml(), $this->getResponse()->getBody());
}
/**
* @magentoDataFixture cmsPageWithSystemRouteFixture
*/
public function testCreatePageWithSameModuleName()
{
$this->dispatch('/shipping');
$content = $this->getResponse()->getBody();
$this->assertStringContainsString('Shipping Test Page', $content);
}
public static function cmsPageWithSystemRouteFixture()
{
/** @var $page \Magento\Cms\Model\Page */
$page = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(\Magento\Cms\Model\Page::class);
$page->setTitle('Test title')
->setIdentifier('shipping')
->setStores([0])
->setIsActive(1)
->setContent('
Shipping Test Page
')
->setPageLayout('1column')
->save();
}
/**
* Check that custom handles are applied when rendering a page.
*
* @return void
* @throws \Throwable
* @magentoDataFixture Magento/Cms/_files/pages_with_layout_xml.php
*/
public function testCustomHandles(): void
{
$page = $this->pageRetriever->execute('test_custom_layout_page_3', 0);
$this->dispatch('/cms/page/view/page_id/' . $page->getId());
/** @var LayoutInterface $layout */
$layout = $this->_objectManager->get(LayoutInterface::class);
$handles = $layout->getUpdate()->getHandles();
$this->assertContains('cms_page_view_selectable_test_custom_layout_page_3_test_selected', $handles);
}
/**
* Check home page custom handle is applied when rendering a page.
*
* @return void
* @throws \Throwable
* @magentoDataFixture Magento/Cms/_files/home_with_custom_handle.php
*/
public function testHomePageCustomHandles(): void
{
$this->dispatch('/');
/** @var LayoutInterface $layout */
$layout = $this->_objectManager->get(LayoutInterface::class);
$handles = $layout->getUpdate()->getHandles();
$this->assertContains('cms_page_view_selectable_home_page_custom_layout', $handles);
}
/**
* Tests page renders even with unavailable custom page layout.
*
* @magentoDataFixture Magento/Cms/Fixtures/page_list.php
* @dataProvider pageLayoutDataProvider
* @param string $pageIdentifier
* @return void
*/
public function testPageWithCustomLayout(string $pageIdentifier): void
{
$page = $this->pageRetriever->execute($pageIdentifier, 0);
$this->dispatch('/cms/page/view/page_id/' . $page->getId());
$this->assertStringContainsString(
'',
$this->getResponse()->getBody()
);
}
/**
* @return array
*/
public function pageLayoutDataProvider(): array
{
return [
'Page with 1column layout' => ['page-with-1column-layout'],
'Page with unavailable layout' => ['page-with-unavailable-layout']
];
}
}