AddFieldsToAttributeObserverTest.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Swatches\Test\Unit\Observer;
  7. /**
  8. * Observer test
  9. */
  10. class AddFieldsToAttributeObserverTest extends \PHPUnit\Framework\TestCase
  11. {
  12. /** @var \Magento\Framework\Module\Manager|\PHPUnit_Framework_MockObject_MockObject */
  13. protected $moduleManagerMock;
  14. /** @var \Magento\Config\Model\Config\Source\Yesno|\PHPUnit_Framework_MockObject_MockObject */
  15. protected $yesNoMock;
  16. /** @var \Magento\Framework\Data\Form|\PHPUnit_Framework_MockObject_MockObject */
  17. protected $formMock;
  18. /** @var \Magento\Framework\Event\Observer|\PHPUnit_Framework_MockObject_MockObject */
  19. protected $eventObserverMock;
  20. /** @var \Magento\Swatches\Observer\AddFieldsToAttributeObserver|\PHPUnit_Framework_MockObject_MockObject */
  21. protected $observerMock;
  22. protected function setUp()
  23. {
  24. $this->moduleManagerMock = $this->createMock(\Magento\Framework\Module\Manager::class);
  25. $this->yesNoMock = $this->createMock(\Magento\Config\Model\Config\Source\Yesno::class);
  26. $this->eventObserverMock = $this->createPartialMock(
  27. \Magento\Framework\Event\Observer::class,
  28. ['getForm', 'getEvent', 'getAttribute']
  29. );
  30. $this->formMock = $this->createPartialMock(\Magento\Framework\Data\Form::class, ['getElement']);
  31. $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
  32. $this->observerMock = $objectManager->getObject(
  33. \Magento\Swatches\Observer\AddFieldsToAttributeObserver::class,
  34. [
  35. 'moduleManager' => $this->moduleManagerMock,
  36. 'yesNo' => $this->yesNoMock,
  37. ]
  38. );
  39. }
  40. /**
  41. * @dataProvider dataAddFields
  42. */
  43. public function testAddFields($expected)
  44. {
  45. $this->moduleManagerMock
  46. ->expects($this->once())
  47. ->method('isOutputEnabled')
  48. ->willReturn($expected['isOutputEnabled']);
  49. $this->eventObserverMock
  50. ->expects($this->exactly($expected['methods_count']))
  51. ->method('getForm')
  52. ->willReturn($this->formMock);
  53. $element = $this->createMock(\Magento\Framework\Data\Form\Element\AbstractElement::class);
  54. $this->formMock
  55. ->expects($this->exactly($expected['methods_count']))
  56. ->method('getElement')
  57. ->with('base_fieldset')
  58. ->willReturn($element);
  59. $element->expects($this->exactly($expected['addField_count']))->method('addField');
  60. $this->yesNoMock->expects($this->exactly($expected['yesno_count']))->method('toOptionArray');
  61. $this->observerMock->execute($this->eventObserverMock);
  62. }
  63. /**
  64. * @return array
  65. */
  66. public function dataAddFields()
  67. {
  68. return [
  69. [
  70. [
  71. 'isOutputEnabled' => true,
  72. 'methods_count' => 1,
  73. 'addField_count' => 2,
  74. 'yesno_count' => 1,
  75. ],
  76. ],
  77. [
  78. [
  79. 'isOutputEnabled' => false,
  80. 'methods_count' => 0,
  81. 'addField_count' => 0,
  82. 'yesno_count' => 0,
  83. ],
  84. ],
  85. ];
  86. }
  87. }