Skip to content

Commit

Permalink
MAGETWO-54066: [GITHUB] Invalid event prefix for catalog inventory #4857
Browse files Browse the repository at this point in the history
  • Loading branch information
Mykola Palamar committed May 29, 2017
1 parent 83e7b3b commit 71ab165
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 18 deletions.
2 changes: 1 addition & 1 deletion app/code/Magento/CatalogInventory/Model/Stock.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class Stock extends AbstractExtensibleModel implements StockInterface
*
* @var string
*/
protected $eventObject = 'stock';
protected $_eventObject = 'stock';

const BACKORDERS_NO = 0;

Expand Down
2 changes: 1 addition & 1 deletion app/code/Magento/CatalogInventory/Model/Stock/Item.php
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ class Item extends AbstractExtensibleModel implements StockItemInterface
*
* @var string
*/
protected $eventObject = 'item';
protected $_eventObject = 'item';

/**
* Store model manager
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -477,33 +477,37 @@ public function getQtyIncrementsDataProvider()
*
* @param $eventName
* @param $methodName
* @param $objectName
*
* @dataProvider eventsDataProvider
*/
public function testDispatchEvents($eventName, $methodName)
public function testDispatchEvents($eventName, $methodName, $objectName)
{
$isCalledWithRightPrefix = 0;
$isObjectNameRight = 0;
$this->eventDispatcher->expects($this->any())->method('dispatch')->with(
$this->callback(function ($arg) use (&$isCalledWithRightPrefix, $eventName) {
$isCalledWithRightPrefix |= ($arg === $eventName);
return true;
}),
$this->anything()
$this->callback(function ($data) use (&$isObjectNameRight, $objectName) {
$isObjectNameRight |= isset($data[$objectName]);
return true;
})
);

$this->item->$methodName();
$this->assertEquals(
1,
(int) $isCalledWithRightPrefix,
sprintf("Event %s doesn't dispatched", $eventName)
$this->assertTrue(
($isCalledWithRightPrefix && $isObjectNameRight),
sprintf('Event "%s" with object name "%s" doesn\'t dispatched properly', $eventName, $objectName)
);
}

public function eventsDataProvider()
{
return [
['cataloginventory_stock_item_save_before', 'beforeSave'],
['cataloginventory_stock_item_save_after', 'afterSave'],
['cataloginventory_stock_item_save_before', 'beforeSave', 'item'],
['cataloginventory_stock_item_save_after', 'afterSave', 'item'],
];
}
}
20 changes: 12 additions & 8 deletions app/code/Magento/CatalogInventory/Test/Unit/Model/StockTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -100,33 +100,37 @@ public function setUp()
*
* @param $eventName
* @param $methodName
* @param $objectName
*
* @dataProvider eventsDataProvider
*/
public function testDispatchEvents($eventName, $methodName)
public function testDispatchEvents($eventName, $methodName, $objectName)
{
$isCalledWithRightPrefix = 0;
$isObjectNameRight = 0;
$this->eventDispatcher->expects($this->any())->method('dispatch')->with(
$this->callback(function ($arg) use (&$isCalledWithRightPrefix, $eventName) {
$isCalledWithRightPrefix |= ($arg === $eventName);
return true;
}),
$this->anything()
$this->callback(function ($data) use (&$isObjectNameRight, $objectName) {
$isObjectNameRight |= isset($data[$objectName]);
return true;
})
);

$this->stockModel->$methodName();
$this->assertEquals(
1,
(int) $isCalledWithRightPrefix,
sprintf("Event %s doesn't dispatched", $eventName)
$this->assertTrue(
($isCalledWithRightPrefix && $isObjectNameRight),
sprintf('Event "%s" with object name "%s" doesn\'t dispatched properly', $eventName, $objectName)
);
}

public function eventsDataProvider()
{
return [
['cataloginventory_stock_save_before', 'beforeSave'],
['cataloginventory_stock_save_after', 'afterSave'],
['cataloginventory_stock_save_before', 'beforeSave', 'stock'],
['cataloginventory_stock_save_after', 'afterSave', 'stock'],
];
}
}

0 comments on commit 71ab165

Please sign in to comment.