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