EditTest.php 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\UrlRewrite\Block;
  7. /**
  8. * Test for \Magento\UrlRewrite\Block\Edit
  9. * @magentoAppArea adminhtml
  10. */
  11. class EditTest extends \PHPUnit\Framework\TestCase
  12. {
  13. /**
  14. * Test prepare layout
  15. *
  16. * @dataProvider prepareLayoutDataProvider
  17. *
  18. * @param array $blockAttributes
  19. * @param array $expected
  20. *
  21. * @magentoAppIsolation enabled
  22. */
  23. public function testPrepareLayout($blockAttributes, $expected)
  24. {
  25. /** @var $layout \Magento\Framework\View\LayoutInterface */
  26. $layout = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->get(
  27. \Magento\Framework\View\LayoutInterface::class
  28. );
  29. /** @var $block \Magento\UrlRewrite\Block\Edit */
  30. $block = $layout->createBlock(\Magento\UrlRewrite\Block\Edit::class, '', ['data' => $blockAttributes]);
  31. $this->_checkSelector($block, $expected);
  32. $this->_checkButtons($block, $expected);
  33. $this->_checkForm($block, $expected);
  34. }
  35. /**
  36. * Check entity selector
  37. *
  38. * @param \Magento\UrlRewrite\Block\Edit $block
  39. * @param array $expected
  40. */
  41. private function _checkSelector($block, $expected)
  42. {
  43. $layout = $block->getLayout();
  44. /** @var $selectorBlock \Magento\UrlRewrite\Block\Selector|bool */
  45. $selectorBlock = $layout->getChildBlock($block->getNameInLayout(), 'selector');
  46. if ($expected['selector']) {
  47. $this->assertInstanceOf(
  48. \Magento\UrlRewrite\Block\Selector::class,
  49. $selectorBlock,
  50. 'Child block with entity selector is invalid'
  51. );
  52. } else {
  53. $this->assertFalse($selectorBlock, 'Child block with entity selector should not present in block');
  54. }
  55. }
  56. /**
  57. * Check form
  58. *
  59. * @param \Magento\UrlRewrite\Block\Edit $block
  60. * @param array $expected
  61. */
  62. private function _checkForm($block, $expected)
  63. {
  64. $layout = $block->getLayout();
  65. $blockName = $block->getNameInLayout();
  66. /** @var $formBlock \Magento\UrlRewrite\Block\Edit\Form|bool */
  67. $formBlock = $layout->getChildBlock($blockName, 'form');
  68. if ($expected['form']) {
  69. $this->assertInstanceOf(
  70. \Magento\UrlRewrite\Block\Edit\Form::class,
  71. $formBlock,
  72. 'Child block with form is invalid'
  73. );
  74. $this->assertSame(
  75. $expected['form']['url_rewrite'],
  76. $formBlock->getUrlRewrite(),
  77. 'Form block should have same URL rewrite attribute'
  78. );
  79. } else {
  80. $this->assertFalse($formBlock, 'Child block with form should not present in block');
  81. }
  82. }
  83. /**
  84. * Check buttons
  85. *
  86. * @param \Magento\UrlRewrite\Block\Edit $block
  87. * @param array $expected
  88. */
  89. private function _checkButtons($block, $expected)
  90. {
  91. $buttonsHtml = $block->getButtonsHtml();
  92. if ($expected['back_button']) {
  93. $this->assertEquals(
  94. 1,
  95. \Magento\TestFramework\Helper\Xpath::getElementsCountForXpath(
  96. '//button[contains(@class,"back")]',
  97. $buttonsHtml
  98. ),
  99. 'Back button is not present in block'
  100. );
  101. } else {
  102. $this->assertEquals(
  103. 0,
  104. \Magento\TestFramework\Helper\Xpath::getElementsCountForXpath(
  105. '//button[contains(@class,"back")]',
  106. $buttonsHtml
  107. ),
  108. 'Back button should not present in block'
  109. );
  110. }
  111. if ($expected['save_button']) {
  112. $this->assertEquals(
  113. 1,
  114. \Magento\TestFramework\Helper\Xpath::getElementsCountForXpath(
  115. '//button[contains(@class,"save")]',
  116. $buttonsHtml
  117. ),
  118. 'Save button is not present in block'
  119. );
  120. } else {
  121. $this->assertEquals(
  122. 0,
  123. \Magento\TestFramework\Helper\Xpath::getElementsCountForXpath(
  124. '//button[contains(@class,"save")]',
  125. $buttonsHtml
  126. ),
  127. 'Save button should not present in block'
  128. );
  129. }
  130. if ($expected['reset_button']) {
  131. $this->assertEquals(
  132. 1,
  133. \Magento\TestFramework\Helper\Xpath::getElementsCountForXpath(
  134. '//button[@title="Reset"]',
  135. $buttonsHtml
  136. ),
  137. 'Reset button is not present in block'
  138. );
  139. } else {
  140. $this->assertEquals(
  141. 0,
  142. \Magento\TestFramework\Helper\Xpath::getElementsCountForXpath(
  143. '//button[@title="Reset"]',
  144. $buttonsHtml
  145. ),
  146. 'Reset button should not present in block'
  147. );
  148. }
  149. if ($expected['delete_button']) {
  150. $this->assertEquals(
  151. 1,
  152. \Magento\TestFramework\Helper\Xpath::getElementsCountForXpath(
  153. '//button[contains(@class,"delete")]',
  154. $buttonsHtml
  155. ),
  156. 'Delete button is not present in block'
  157. );
  158. } else {
  159. $this->assertEquals(
  160. 0,
  161. \Magento\TestFramework\Helper\Xpath::getElementsCountForXpath(
  162. '//button[contains(@class,"delete")]',
  163. $buttonsHtml
  164. ),
  165. 'Delete button should not present in block'
  166. );
  167. }
  168. }
  169. /**
  170. * Data provider
  171. *
  172. * @return array
  173. */
  174. public function prepareLayoutDataProvider()
  175. {
  176. /** @var $urlRewrite \Magento\UrlRewrite\Model\UrlRewrite */
  177. $urlRewrite = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
  178. \Magento\UrlRewrite\Model\UrlRewrite::class
  179. );
  180. /** @var $existingUrlRewrite \Magento\UrlRewrite\Model\UrlRewrite */
  181. $existingUrlRewrite = \Magento\TestFramework\Helper\Bootstrap::getObjectManager()->create(
  182. \Magento\UrlRewrite\Model\UrlRewrite::class,
  183. ['data' => ['url_rewrite_id' => 1]]
  184. );
  185. return [
  186. // Creating new URL rewrite
  187. [
  188. ['url_rewrite' => $urlRewrite],
  189. [
  190. 'selector' => true,
  191. 'back_button' => true,
  192. 'save_button' => true,
  193. 'reset_button' => false,
  194. 'delete_button' => false,
  195. 'form' => ['url_rewrite' => $urlRewrite]
  196. ]
  197. ],
  198. // Editing URL rewrite
  199. [
  200. ['url_rewrite' => $existingUrlRewrite],
  201. [
  202. 'selector' => true,
  203. 'back_button' => true,
  204. 'save_button' => true,
  205. 'reset_button' => true,
  206. 'delete_button' => true,
  207. 'form' => ['url_rewrite' => $existingUrlRewrite]
  208. ]
  209. ]
  210. ];
  211. }
  212. }