ButtonTest.php 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. /**
  7. * Test class for \Magento\Backend\Block\Widget\Button
  8. */
  9. namespace Magento\Backend\Test\Unit\Block\Widget;
  10. class ButtonTest extends \PHPUnit\Framework\TestCase
  11. {
  12. /**
  13. * @var \PHPUnit_Framework_MockObject_MockObject
  14. */
  15. protected $_layoutMock;
  16. /**
  17. * @var \PHPUnit_Framework_MockObject_MockObject
  18. */
  19. protected $_factoryMock;
  20. /**
  21. * @var \PHPUnit_Framework_MockObject_MockObject
  22. */
  23. protected $_blockMock;
  24. /**
  25. * @var \PHPUnit_Framework_MockObject_MockObject
  26. */
  27. protected $_buttonMock;
  28. protected function setUp()
  29. {
  30. $this->_layoutMock = $this->createMock(\Magento\Framework\View\Layout::class);
  31. $arguments = [
  32. 'urlBuilder' => $this->createMock(\Magento\Backend\Model\Url::class),
  33. 'layout' => $this->_layoutMock,
  34. ];
  35. $objectManagerHelper = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
  36. $this->_blockMock = $objectManagerHelper->getObject(\Magento\Backend\Block\Widget\Button::class, $arguments);
  37. }
  38. protected function tearDown()
  39. {
  40. unset($this->_layoutMock);
  41. unset($this->_buttonMock);
  42. }
  43. /**
  44. * @covers \Magento\Backend\Block\Widget\Button::getAttributesHtml
  45. * @dataProvider getAttributesHtmlDataProvider
  46. */
  47. public function testGetAttributesHtml($data, $expect)
  48. {
  49. $this->_blockMock->setData($data);
  50. $attributes = $this->_blockMock->getAttributesHtml();
  51. $this->assertRegExp($expect, $attributes);
  52. }
  53. /**
  54. * @return array
  55. */
  56. public function getAttributesHtmlDataProvider()
  57. {
  58. return [
  59. [
  60. ['data_attribute' => ['validation' => ['required' => true]]],
  61. '/data-validation="[^"]*" /',
  62. ],
  63. [
  64. ['data_attribute' => ['mage-init' => ['button' => ['someKey' => 'someValue']]]],
  65. '/data-mage-init="[^"]*" /'
  66. ],
  67. [
  68. [
  69. 'data_attribute' => [
  70. 'mage-init' => ['button' => ['someKey' => 'someValue']],
  71. 'validation' => ['required' => true],
  72. ],
  73. ],
  74. '/data-mage-init="[^"]*" data-validation="[^"]*" /'
  75. ]
  76. ];
  77. }
  78. }