From 85ce9a2c6ac88214730a8ad56ee58c533fe213a5 Mon Sep 17 00:00:00 2001 From: Cristian Partica <cpartica@ebay.com> Date: Tue, 5 May 2015 09:59:39 -0500 Subject: [PATCH] FearlessKiwis-MAGETWO-35688-FPT-Final-price-of-Simple-Product-isn-t-recalculated-after-selecting-options-on-product-page - bamboo pass by reference problem static - Wee Observer integrity test fix --- .../Catalog/Block/Product/View/Options.php | 12 ++++++++++-- app/code/Magento/Weee/Model/Observer.php | 6 +++--- .../Model/{Observer.php => ObserverTest.php} | 18 +++++++++++------- 3 files changed, 24 insertions(+), 12 deletions(-) rename app/code/Magento/Weee/Test/Unit/Model/{Observer.php => ObserverTest.php} (84%) diff --git a/app/code/Magento/Catalog/Block/Product/View/Options.php b/app/code/Magento/Catalog/Block/Product/View/Options.php index 312e6908383..db3d2a91103 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 3a09d92d135..9714f24e8fa 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 edb2fec221d..63a13abb536 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')); } } -- GitLab