magento2-docker/dev/tests/integration/testsuite/Magento/UrlRewrite/Block/EditTest.php

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]
]
]
];
}
}