Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
EventManagerTest.php
Go to the documentation of this file.
1 <?php
10 namespace Magento\Test;
11 
12 class EventManagerTest extends \PHPUnit\Framework\TestCase
13 {
17  protected $_eventManager;
18 
22  protected $_subscriberOne;
23 
27  protected $_subscriberTwo;
28 
29  protected function setUp()
30  {
31  $this->_subscriberOne = $this->createPartialMock(\stdClass::class, ['testEvent']);
32  $this->_subscriberTwo = $this->createPartialMock(\stdClass::class, ['testEvent']);
33  $this->_eventManager = new \Magento\TestFramework\EventManager(
34  [$this->_subscriberOne, $this->_subscriberTwo]
35  );
36  }
37 
43  public function testFireEvent($reverseOrder, $expectedSubscribers)
44  {
45  $actualSubscribers = [];
46  $callback = function () use (&$actualSubscribers) {
47  $actualSubscribers[] = 'subscriberOne';
48  };
49  $this->_subscriberOne->expects($this->once())->method('testEvent')->will($this->returnCallback($callback));
50  $callback = function () use (&$actualSubscribers) {
51  $actualSubscribers[] = 'subscriberTwo';
52  };
53  $this->_subscriberTwo->expects($this->once())->method('testEvent')->will($this->returnCallback($callback));
54  $this->_eventManager->fireEvent('testEvent', [], $reverseOrder);
55  $this->assertEquals($expectedSubscribers, $actualSubscribers);
56  }
57 
58  public function fireEventDataProvider()
59  {
60  return [
61  'straight order' => [false, ['subscriberOne', 'subscriberTwo']],
62  'reverse order' => [true, ['subscriberTwo', 'subscriberOne']]
63  ];
64  }
65 
66  public function testFireEventParameters()
67  {
68  $paramOne = 123;
69  $paramTwo = 456;
70  $this->_subscriberOne->expects($this->once())->method('testEvent')->with($paramOne, $paramTwo);
71  $this->_subscriberTwo->expects($this->once())->method('testEvent')->with($paramOne, $paramTwo);
72  $this->_eventManager->fireEvent('testEvent', [$paramOne, $paramTwo]);
73  }
74 }
testFireEvent($reverseOrder, $expectedSubscribers)