diff --git a/app/code/Magento/Catalog/Block/Product/View/Options.php b/app/code/Magento/Catalog/Block/Product/View/Options.php index 312e69083836f7a6bf679d9dcf8e0b25ab4d34ea..db3d2a911038295fbcb8942d7c61f0041a2637a5 100644 --- a/app/code/Magento/Catalog/Block/Product/View/Options.php +++ b/app/code/Magento/Catalog/Block/Product/View/Options.php @@ -219,8 +219,16 @@ class Options extends \Magento\Framework\View\Element\Template $config[$option->getId()] = $priceValue; } - //alter the return array from the other modules eg: weee - $this->_eventManager->dispatch('catalog_product_option_price_configuration_after', ['config' => &$config]); + $configObj = new \Magento\Framework\Object( + [ + 'config' => $config, + ] + ); + + //pass the return array encapsulated in an object for the other modules to be able to alter it eg: weee + $this->_eventManager->dispatch('catalog_product_option_price_configuration_after', ['configObj' => $configObj]); + + $config=$configObj->getConfig(); return $this->_jsonEncoder->encode($config); } diff --git a/app/code/Magento/Weee/Model/Observer.php b/app/code/Magento/Weee/Model/Observer.php index 3a09d92d135476c3870f436091d43baf7bffea74..9714f24e8fa0089c9b38c17a3da94feebd473316 100644 --- a/app/code/Magento/Weee/Model/Observer.php +++ b/app/code/Magento/Weee/Model/Observer.php @@ -204,7 +204,8 @@ class Observer extends \Magento\Framework\Model\AbstractModel public function getPriceConfiguration(\Magento\Framework\Event\Observer $observer) { if ($this->_weeeData->isEnabled()) { - $priceConfig=$observer->getData('config'); + $priceConfigObj=$observer->getData('configObj'); + $priceConfig=$priceConfigObj->getConfig(); if (is_array($priceConfig)) { foreach ($priceConfig as $keyConfigs => $configs) { if (is_array($configs)) { @@ -217,8 +218,7 @@ class Observer extends \Magento\Framework\Model\AbstractModel } } } - - $observer->setData('config', $priceConfig); + $priceConfigObj->setConfig($priceConfig); } return $this; } diff --git a/app/code/Magento/Weee/Test/Unit/Model/Observer.php b/app/code/Magento/Weee/Test/Unit/Model/ObserverTest.php similarity index 84% rename from app/code/Magento/Weee/Test/Unit/Model/Observer.php rename to app/code/Magento/Weee/Test/Unit/Model/ObserverTest.php index edb2fec221dbf31425a88d5898d79679ab69645d..63a13abb53622e5f93590a1586d695fb17e18707 100644 --- a/app/code/Magento/Weee/Test/Unit/Model/Observer.php +++ b/app/code/Magento/Weee/Test/Unit/Model/ObserverTest.php @@ -40,6 +40,12 @@ class ObserverTest extends \PHPUnit_Framework_TestCase ], ]; + $configObj = new \Magento\Framework\Object( + [ + 'config' => $testArray, + ] + ); + $testArrayWithWeee=$testArray; $testArrayWithWeee[0][0]['prices']['weeePrice']= [ 'amount' => $testArray[0][0]['prices']['finalPrice']['amount'], @@ -57,12 +63,8 @@ class ObserverTest extends \PHPUnit_Framework_TestCase $observerObject->expects($this->any()) ->method('getData') - ->with('config') - ->will($this->returnValue($testArray)); - - $observerObject->expects($this->once()) - ->method('setData') - ->with('config', $testArrayWithWeee); + ->with('configObj') + ->will($this->returnValue($configObj)); $objectManager = new ObjectManager($this); $weeeObserverObject = $objectManager->getObject( @@ -71,6 +73,8 @@ class ObserverTest extends \PHPUnit_Framework_TestCase 'weeeData' => $weeHelper, ] ); - $weeeObserverObject->getPriceConfiguration($observerObject); + $weeeObserverObject->getPriceConfiguration($observerObject); + + $this->assertEquals($testArrayWithWeee, $configObj->getData('config')); } }