230 lines
7.2 KiB
PHP
Executable File
230 lines
7.2 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
namespace Magento\UrlRewrite\Block;
|
|
|
|
/**
|
|
* Test for \Magento\UrlRewrite\Block\Edit
|
|
* @magentoAppArea adminhtml
|
|
*/
|
|
class EditTest extends \PHPUnit\Framework\TestCase
|
|
{
|
|
/**
|
|
* Test prepare layout
|
|
*
|
|
* @dataProvider prepareLayoutDataProvider
|
|
*
|
|
* @param array $blockAttributes
|
|
* @param array $expected
|
|
*
|
|
* @magentoAppIsolation enabled
|
|
*/
|
|
public function testPrepareLayout($blockAttributes, $expected)
|
|
{
|
|
/** @var $layout \Magento\Framework\View\LayoutInterface */
|
|
$layout = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
|
|
\Magento\Framework\View\LayoutInterface::class
|
|
);
|
|
|
|
/** @var $block \Magento\UrlRewrite\Block\Edit */
|
|
$block = $layout->createBlock(\Magento\UrlRewrite\Block\Edit::class, '', ['data' => $blockAttributes]);
|
|
|
|
$this->_checkSelector($block, $expected);
|
|
$this->_checkButtons($block, $expected);
|
|
$this->_checkForm($block, $expected);
|
|
}
|
|
|
|
/**
|
|
* Check entity selector
|
|
*
|
|
* @param \Magento\UrlRewrite\Block\Edit $block
|
|
* @param array $expected
|
|
*/
|
|
private function _checkSelector($block, $expected)
|
|
{
|
|
$layout = $block->getLayout();
|
|
|
|
/** @var $selectorBlock \Magento\UrlRewrite\Block\Selector|bool */
|
|
$selectorBlock = $layout->getChildBlock($block->getNameInLayout(), 'selector');
|
|
|
|
if ($expected['selector']) {
|
|
$this->assertInstanceOf(
|
|
\Magento\UrlRewrite\Block\Selector::class,
|
|
$selectorBlock,
|
|
'Child block with entity selector is invalid'
|
|
);
|
|
} else {
|
|
$this->assertFalse($selectorBlock, 'Child block with entity selector should not present in block');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Check form
|
|
*
|
|
* @param \Magento\UrlRewrite\Block\Edit $block
|
|
* @param array $expected
|
|
*/
|
|
private function _checkForm($block, $expected)
|
|
{
|
|
$layout = $block->getLayout();
|
|
$blockName = $block->getNameInLayout();
|
|
|
|
/** @var $formBlock \Magento\UrlRewrite\Block\Edit\Form|bool */
|
|
$formBlock = $layout->getChildBlock($blockName, 'form');
|
|
|
|
if ($expected['form']) {
|
|
$this->assertInstanceOf(
|
|
\Magento\UrlRewrite\Block\Edit\Form::class,
|
|
$formBlock,
|
|
'Child block with form is invalid'
|
|
);
|
|
|
|
$this->assertSame(
|
|
$expected['form']['url_rewrite'],
|
|
$formBlock->getUrlRewrite(),
|
|
'Form block should have same URL rewrite attribute'
|
|
);
|
|
} else {
|
|
$this->assertFalse($formBlock, 'Child block with form should not present in block');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Check buttons
|
|
*
|
|
* @param \Magento\UrlRewrite\Block\Edit $block
|
|
* @param array $expected
|
|
*/
|
|
private function _checkButtons($block, $expected)
|
|
{
|
|
$buttonsHtml = $block->getButtonsHtml();
|
|
|
|
if ($expected['back_button']) {
|
|
$this->assertEquals(
|
|
1,
|
|
\Magento\TestFramework\Helper\Xpath::getElementsCountForXpath(
|
|
'//button[contains(@class,"back")]',
|
|
$buttonsHtml
|
|
),
|
|
'Back button is not present in block'
|
|
);
|
|
} else {
|
|
$this->assertEquals(
|
|
0,
|
|
\Magento\TestFramework\Helper\Xpath::getElementsCountForXpath(
|
|
'//button[contains(@class,"back")]',
|
|
$buttonsHtml
|
|
),
|
|
'Back button should not present in block'
|
|
);
|
|
}
|
|
|
|
if ($expected['save_button']) {
|
|
$this->assertEquals(
|
|
1,
|
|
\Magento\TestFramework\Helper\Xpath::getElementsCountForXpath(
|
|
'//button[contains(@class,"save")]',
|
|
$buttonsHtml
|
|
),
|
|
'Save button is not present in block'
|
|
);
|
|
} else {
|
|
$this->assertEquals(
|
|
0,
|
|
\Magento\TestFramework\Helper\Xpath::getElementsCountForXpath(
|
|
'//button[contains(@class,"save")]',
|
|
$buttonsHtml
|
|
),
|
|
'Save button should not present in block'
|
|
);
|
|
}
|
|
|
|
if ($expected['reset_button']) {
|
|
$this->assertEquals(
|
|
1,
|
|
\Magento\TestFramework\Helper\Xpath::getElementsCountForXpath(
|
|
'//button[@title="Reset"]',
|
|
$buttonsHtml
|
|
),
|
|
'Reset button is not present in block'
|
|
);
|
|
} else {
|
|
$this->assertEquals(
|
|
0,
|
|
\Magento\TestFramework\Helper\Xpath::getElementsCountForXpath(
|
|
'//button[@title="Reset"]',
|
|
$buttonsHtml
|
|
),
|
|
'Reset button should not present in block'
|
|
);
|
|
}
|
|
|
|
if ($expected['delete_button']) {
|
|
$this->assertEquals(
|
|
1,
|
|
\Magento\TestFramework\Helper\Xpath::getElementsCountForXpath(
|
|
'//button[contains(@class,"delete")]',
|
|
$buttonsHtml
|
|
),
|
|
'Delete button is not present in block'
|
|
);
|
|
} else {
|
|
$this->assertEquals(
|
|
0,
|
|
\Magento\TestFramework\Helper\Xpath::getElementsCountForXpath(
|
|
'//button[contains(@class,"delete")]',
|
|
$buttonsHtml
|
|
),
|
|
'Delete button should not present in block'
|
|
);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Data provider
|
|
*
|
|
* @return array
|
|
*/
|
|
public function prepareLayoutDataProvider()
|
|
{
|
|
/** @var $urlRewrite \Magento\UrlRewrite\Model\UrlRewrite */
|
|
$urlRewrite = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
|
|
\Magento\UrlRewrite\Model\UrlRewrite::class
|
|
);
|
|
/** @var $existingUrlRewrite \Magento\UrlRewrite\Model\UrlRewrite */
|
|
$existingUrlRewrite = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
|
|
\Magento\UrlRewrite\Model\UrlRewrite::class,
|
|
['data' => ['url_rewrite_id' => 1]]
|
|
);
|
|
|
|
return [
|
|
// Creating new URL rewrite
|
|
[
|
|
['url_rewrite' => $urlRewrite],
|
|
[
|
|
'selector' => true,
|
|
'back_button' => true,
|
|
'save_button' => true,
|
|
'reset_button' => false,
|
|
'delete_button' => false,
|
|
'form' => ['url_rewrite' => $urlRewrite]
|
|
]
|
|
],
|
|
// Editing URL rewrite
|
|
[
|
|
['url_rewrite' => $existingUrlRewrite],
|
|
[
|
|
'selector' => true,
|
|
'back_button' => true,
|
|
'save_button' => true,
|
|
'reset_button' => true,
|
|
'delete_button' => true,
|
|
'form' => ['url_rewrite' => $existingUrlRewrite]
|
|
]
|
|
]
|
|
];
|
|
}
|
|
}
|