From 0b7a99d7a330216a829056af1b7eb876c14657db Mon Sep 17 00:00:00 2001 From: "a.chorniy" Date: Wed, 8 Jan 2020 18:39:16 +0200 Subject: [PATCH 1/3] Issue-25968 - Added additional checking for returning needed variable type --- app/code/Magento/Sales/Model/Order/Item.php | 8 +++++++- .../Sales/Test/Unit/Model/Order/ItemTest.php | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/app/code/Magento/Sales/Model/Order/Item.php b/app/code/Magento/Sales/Model/Order/Item.php index a0eff45179ac8..f9e585098aef4 100644 --- a/app/code/Magento/Sales/Model/Order/Item.php +++ b/app/code/Magento/Sales/Model/Order/Item.php @@ -1319,7 +1319,13 @@ public function getParentItemId() */ public function getPrice() { - return $this->getData(OrderItemInterface::PRICE); + $price = $this->getData(OrderItemInterface::PRICE); + + if ($price === null) { + return $price; + } + + return (float) $price; } /** diff --git a/app/code/Magento/Sales/Test/Unit/Model/Order/ItemTest.php b/app/code/Magento/Sales/Test/Unit/Model/Order/ItemTest.php index 76bfd62a7b889..e74af4739d8c9 100644 --- a/app/code/Magento/Sales/Test/Unit/Model/Order/ItemTest.php +++ b/app/code/Magento/Sales/Test/Unit/Model/Order/ItemTest.php @@ -348,4 +348,22 @@ public function getItemQtyVariants() ] ]; } + + /** + * Test getPrice() method + */ + public function testGetPrice() + { + $price = 9.99; + $this->model->setPrice($price); + $this->assertEquals($price, $this->model->getPrice()); + + $newPrice = 5.53; + $this->model->setData(\Magento\Sales\Api\Data\OrderItemInterface::PRICE, $newPrice); + $this->assertEquals($newPrice, $this->model->getPrice()); + + $nullablePrice = null; + $this->model->setPrice($nullablePrice); + $this->assertEquals($nullablePrice, $this->model->getPrice()); + } } From 28e8e5aa46ffe2cfed80124bb95d3ce025a127c8 Mon Sep 17 00:00:00 2001 From: "a.chorniy" Date: Wed, 15 Jan 2020 11:56:36 +0200 Subject: [PATCH 2/3] Issue-25968 - Added adjustments after review --- app/code/Magento/Sales/Model/Order/Item.php | 4 +++ .../Sales/Test/Unit/Model/Order/ItemTest.php | 26 ++++++++++--------- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/app/code/Magento/Sales/Model/Order/Item.php b/app/code/Magento/Sales/Model/Order/Item.php index f9e585098aef4..c133d3aea267d 100644 --- a/app/code/Magento/Sales/Model/Order/Item.php +++ b/app/code/Magento/Sales/Model/Order/Item.php @@ -385,6 +385,8 @@ public function getStatus() * * @param string $statusId * @return \Magento\Framework\Phrase + * + * phpcs:disable Magento2.Functions.StaticFunction */ public static function getStatusName($statusId) { @@ -422,6 +424,8 @@ public function cancel() * Retrieve order item statuses array * * @return array + * + * phpcs:disable Magento2.Functions.StaticFunction */ public static function getStatuses() { diff --git a/app/code/Magento/Sales/Test/Unit/Model/Order/ItemTest.php b/app/code/Magento/Sales/Test/Unit/Model/Order/ItemTest.php index e74af4739d8c9..72e379006742a 100644 --- a/app/code/Magento/Sales/Test/Unit/Model/Order/ItemTest.php +++ b/app/code/Magento/Sales/Test/Unit/Model/Order/ItemTest.php @@ -9,11 +9,10 @@ use Magento\Framework\Serialize\Serializer\Json; use Magento\Sales\Model\ResourceModel\OrderFactory; use \Magento\Sales\Model\Order; +use Magento\Sales\Api\Data\OrderItemInterface; /** - * Class ItemTest - * - * @package Magento\Sales\Model\Order + * Unit test for order item class. */ class ItemTest extends \PHPUnit\Framework\TestCase { @@ -72,7 +71,7 @@ public function testSetParentItem() public function testGetPatentItem() { $item = $this->objectManager->getObject(\Magento\Sales\Model\Order\Item::class, []); - $this->model->setData(\Magento\Sales\Api\Data\OrderItemInterface::PARENT_ITEM, $item); + $this->model->setData(OrderItemInterface::PARENT_ITEM, $item); $this->assertEquals($item, $this->model->getParentItem()); } @@ -184,7 +183,7 @@ public function testGetOriginalPrice() $this->assertEquals($price, $this->model->getOriginalPrice()); $originalPrice = 5.55; - $this->model->setData(\Magento\Sales\Api\Data\OrderItemInterface::ORIGINAL_PRICE, $originalPrice); + $this->model->setData(OrderItemInterface::ORIGINAL_PRICE, $originalPrice); $this->assertEquals($originalPrice, $this->model->getOriginalPrice()); } @@ -350,20 +349,23 @@ public function getItemQtyVariants() } /** - * Test getPrice() method + * Test getPrice() method should returns float */ - public function testGetPrice() + public function testGetPriceReturnsFloat() { $price = 9.99; $this->model->setPrice($price); $this->assertEquals($price, $this->model->getPrice()); + } - $newPrice = 5.53; - $this->model->setData(\Magento\Sales\Api\Data\OrderItemInterface::PRICE, $newPrice); - $this->assertEquals($newPrice, $this->model->getPrice()); - + /** + * Test getPrice() method should returns null + */ + public function testGetPriceReturnsNull() + { $nullablePrice = null; - $this->model->setPrice($nullablePrice); + $this->model->setData(OrderItemInterface::PRICE, $nullablePrice); $this->assertEquals($nullablePrice, $this->model->getPrice()); } + } From 71da244811484747f55bf3ccb1244844ff903fd6 Mon Sep 17 00:00:00 2001 From: "a.chorniy" Date: Wed, 15 Jan 2020 12:15:05 +0200 Subject: [PATCH 3/3] Issue-25968 - Small adjustments after code review --- app/code/Magento/Sales/Test/Unit/Model/Order/ItemTest.php | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/app/code/Magento/Sales/Test/Unit/Model/Order/ItemTest.php b/app/code/Magento/Sales/Test/Unit/Model/Order/ItemTest.php index 72e379006742a..3c7042c10f4d3 100644 --- a/app/code/Magento/Sales/Test/Unit/Model/Order/ItemTest.php +++ b/app/code/Magento/Sales/Test/Unit/Model/Order/ItemTest.php @@ -7,9 +7,8 @@ namespace Magento\Sales\Test\Unit\Model\Order; use Magento\Framework\Serialize\Serializer\Json; -use Magento\Sales\Model\ResourceModel\OrderFactory; -use \Magento\Sales\Model\Order; use Magento\Sales\Api\Data\OrderItemInterface; +use Magento\Sales\Model\ResourceModel\OrderFactory; /** * Unit test for order item class. @@ -349,7 +348,7 @@ public function getItemQtyVariants() } /** - * Test getPrice() method should returns float + * Test getPrice() method returns float */ public function testGetPriceReturnsFloat() { @@ -359,7 +358,7 @@ public function testGetPriceReturnsFloat() } /** - * Test getPrice() method should returns null + * Test getPrice() method returns null */ public function testGetPriceReturnsNull() { @@ -367,5 +366,4 @@ public function testGetPriceReturnsNull() $this->model->setData(OrderItemInterface::PRICE, $nullablePrice); $this->assertEquals($nullablePrice, $this->model->getPrice()); } - }