CollectionTest.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <?php
  2. /**
  3. * @category Magento
  4. * @package Magento_Event
  5. * Copyright © Magento, Inc. All rights reserved.
  6. * See COPYING.txt for license details.
  7. */
  8. namespace Magento\Framework\Event\Test\Unit;
  9. use \Magento\Framework\Event\Collection;
  10. use Magento\Framework\Event;
  11. /**
  12. * Class CollectionTest
  13. *
  14. * @package Magento\Framework\Event
  15. */
  16. class CollectionTest extends \PHPUnit\Framework\TestCase
  17. {
  18. /**
  19. * @var \Magento\Framework\Event\Collection
  20. */
  21. protected $collection;
  22. /*
  23. * Array of events in the collection
  24. *
  25. * @var array
  26. */
  27. protected $events;
  28. /**
  29. * @var \Magento\Framework\Event\Observer\Collection|\PHPUnit_Framework_MockObject_MockObject
  30. */
  31. protected $observers;
  32. protected function setUp()
  33. {
  34. $this->events = [
  35. 'eventName1' => 'someEvent1',
  36. 'eventName2' => 'someEvent2',
  37. 'eventName3' => 'some_event_3',
  38. ];
  39. $this->observers = new \Magento\Framework\Event\Observer\Collection();
  40. $this->collection = new Collection($this->events, $this->observers);
  41. }
  42. public function testGetAllEvents()
  43. {
  44. $this->assertEquals($this->events, $this->collection->getAllEvents());
  45. }
  46. public function testGetGlobalObservers()
  47. {
  48. $this->assertEquals($this->observers, $this->collection->getGlobalObservers());
  49. }
  50. public function testGetEventByName()
  51. {
  52. $eventName = 'eventName1';
  53. $this->assertEquals($this->events[$eventName], $this->collection->getEventByName($eventName));
  54. }
  55. public function testGetEventByNameNotSet()
  56. {
  57. $eventName = 'eventName';
  58. $eventMock = $this->createPartialMock(\Magento\Framework\Event::class, ['getName']);
  59. $eventMock->setData('name', $eventName);
  60. $eventObj = $this->collection->getEventByName($eventName);
  61. $this->assertEquals($eventMock->getData('name'), $eventObj->getName());
  62. }
  63. public function testAddEvent()
  64. {
  65. $eventName = 'eventName';
  66. $eventMock = $this->createPartialMock(\Magento\Framework\Event::class, ['getName']);
  67. $eventMock->expects($this->once())
  68. ->method('getName')
  69. ->will($this->returnValue($eventName));
  70. $this->collection->addEvent($eventMock);
  71. }
  72. public function testAddObserver()
  73. {
  74. $testEvent = 'testEvent';
  75. $observer = new \Magento\Framework\Event\Observer();
  76. $observer->setData('event_name', $testEvent);
  77. $eventName = 'eventName';
  78. $eventMock = $this->createPartialMock(\Magento\Framework\Event::class, ['getName']);
  79. $eventMock->setData('name', $eventName);
  80. $this->collection->addObserver($observer);
  81. $this->assertNotEmpty($this->collection->getEventByName($testEvent)->getObservers());
  82. }
  83. public function testAddObserverNoEventName()
  84. {
  85. $observer = new \Magento\Framework\Event\Observer();
  86. $this->collection->addObserver($observer);
  87. $this->assertNotEmpty($this->collection->getGlobalObservers());
  88. }
  89. public function testDispatch()
  90. {
  91. $data = ['someData'];
  92. $eventName = 'eventName';
  93. $event = new \Magento\Framework\Event($data);
  94. $event->setData('name', $eventName);
  95. $this->collection->dispatch($eventName, $data);
  96. }
  97. }