![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-tax/Test/Unit/Block/Item/Price/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Tax\Test\Unit\Block\Item\Price; use Magento\Framework\Pricing\PriceCurrencyInterface; use Magento\Framework\Pricing\Render; use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; use Magento\Sales\Model\Order; use Magento\Sales\Model\Order\Invoice\Item as InvoiceItem; use Magento\Sales\Model\Order\Item; use Magento\Store\Model\Store; use Magento\Tax\Block\Item\Price\Renderer; use Magento\Tax\Helper\Data; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; class RendererTest extends TestCase { /** * @var Renderer */ protected $renderer; /** * @var Data|MockObject */ protected $taxHelper; /** * @var PriceCurrencyInterface|MockObject */ protected $priceCurrency; protected function setUp(): void { $objectManager = new ObjectManager($this); $this->priceCurrency = $this->getMockBuilder( PriceCurrencyInterface::class )->getMock(); $this->taxHelper = $this->getMockBuilder(Data::class) ->disableOriginalConstructor() ->setMethods([ 'displayCartPriceExclTax', 'displayCartBothPrices', 'displayCartPriceInclTax', 'displaySalesPriceExclTax', 'displaySalesBothPrices', 'displaySalesPriceInclTax', ]) ->getMock(); $this->renderer = $objectManager->getObject( Renderer::class, [ 'taxHelper' => $this->taxHelper, 'priceCurrency' => $this->priceCurrency, 'data' => [ 'zone' => Render::ZONE_CART, ] ] ); } /** * @param $storeId * @return MockObject|Item */ protected function getItemMockWithStoreId($storeId) { $itemMock = $this->getMockBuilder(Item::class) ->disableOriginalConstructor() ->setMethods(['getStoreId', '__wakeup']) ->getMock(); $itemMock->expects($this->once()) ->method('getStoreId') ->willReturn($storeId); return $itemMock; } /** * Test displayPriceInclTax * * @param string $zone * @param string $methodName * @dataProvider displayPriceInclTaxDataProvider */ public function testDisplayPriceInclTax($zone, $methodName) { $storeId = 1; $flag = true; $itemMock = $this->getItemMockWithStoreId($storeId); $this->renderer->setItem($itemMock); $this->renderer->setZone($zone); $this->taxHelper->expects($this->once()) ->method($methodName) ->with($storeId) ->willReturn($flag); $this->assertEquals($flag, $this->renderer->displayPriceInclTax()); } /** * @return array */ public function displayPriceInclTaxDataProvider() { $data = [ 'cart' => [ 'zone' => Render::ZONE_CART, 'method_name' => 'displayCartPriceInclTax', ], 'anythingelse' => [ 'zone' => 'anythingelse', 'method_name' => 'displayCartPriceInclTax', ], 'sale' => [ 'zone' => Render::ZONE_SALES, 'method_name' => 'displaySalesPriceInclTax', ], 'email' => [ 'zone' => Render::ZONE_EMAIL, 'method_name' => 'displaySalesPriceInclTax', ], ]; return $data; } /** * Test displayPriceExclTax * * @param string $zone * @param string $methodName * @dataProvider displayPriceExclTaxDataProvider */ public function testDisplayPriceExclTax($zone, $methodName) { $storeId = 1; $flag = true; $itemMock = $this->getItemMockWithStoreId($storeId); $this->renderer->setItem($itemMock); $this->renderer->setZone($zone); $this->taxHelper->expects($this->once()) ->method($methodName) ->with($storeId) ->willReturn($flag); $this->assertEquals($flag, $this->renderer->displayPriceExclTax()); } /** * @return array */ public function displayPriceExclTaxDataProvider() { $data = [ 'cart' => [ 'zone' => Render::ZONE_CART, 'method_name' => 'displayCartPriceExclTax', ], 'anythingelse' => [ 'zone' => 'anythingelse', 'method_name' => 'displayCartPriceExclTax', ], 'sale' => [ 'zone' => Render::ZONE_SALES, 'method_name' => 'displaySalesPriceExclTax', ], 'email' => [ 'zone' => Render::ZONE_EMAIL, 'method_name' => 'displaySalesPriceExclTax', ], ]; return $data; } /** * Test displayBothPrices * * @param string $zone * @param string $methodName * @dataProvider displayBothPricesDataProvider */ public function testDisplayBothPrices($zone, $methodName) { $storeId = 1; $flag = true; $itemMock = $this->getItemMockWithStoreId($storeId); $this->renderer->setItem($itemMock); $this->renderer->setZone($zone); $this->taxHelper->expects($this->once()) ->method($methodName) ->with($storeId) ->willReturn($flag); $this->assertEquals($flag, $this->renderer->displayBothPrices()); } /** * @return array */ public function displayBothPricesDataProvider() { $data = [ 'cart' => [ 'zone' => Render::ZONE_CART, 'method_name' => 'displayCartBothPrices', ], 'anythingelse' => [ 'zone' => 'anythingelse', 'method_name' => 'displayCartBothPrices', ], 'sale' => [ 'zone' => Render::ZONE_SALES, 'method_name' => 'displaySalesBothPrices', ], 'email' => [ 'zone' => Render::ZONE_EMAIL, 'method_name' => 'displaySalesBothPrices', ], ]; return $data; } public function testFormatPriceQuoteItem() { $price = 3.554; $formattedPrice = "$3.55"; $storeMock = $this->getMockBuilder(Store::class) ->disableOriginalConstructor() ->setMethods(['formatPrice', '__wakeup']) ->getMock(); $this->priceCurrency->expects($this->once()) ->method('format') ->with($price, true) ->willReturn($formattedPrice); $itemMock = $this->getMockBuilder(\Magento\Quote\Model\Quote\Item::class) ->disableOriginalConstructor() ->setMethods(['getStore', '__wakeup']) ->getMock(); $itemMock->expects($this->once()) ->method('getStore') ->willReturn($storeMock); $this->renderer->setItem($itemMock); $this->assertEquals($formattedPrice, $this->renderer->formatPrice($price)); } public function testFormatPriceOrderItem() { $price = 3.554; $formattedPrice = "$3.55"; $orderMock = $this->getMockBuilder(Order::class) ->disableOriginalConstructor() ->getMock(); $orderMock->expects($this->once()) ->method('formatPrice') ->with($price, false) ->willReturn($formattedPrice); $itemMock = $this->getMockBuilder(Item::class) ->disableOriginalConstructor() ->setMethods(['getOrder', '__wakeup']) ->getMock(); $itemMock->expects($this->once()) ->method('getOrder') ->willReturn($orderMock); $this->renderer->setItem($itemMock); $this->assertEquals($formattedPrice, $this->renderer->formatPrice($price)); } public function testFormatPriceInvoiceItem() { $price = 3.554; $formattedPrice = "$3.55"; $orderMock = $this->getMockBuilder(Order::class) ->disableOriginalConstructor() ->setMethods(['formatPrice', '__wakeup']) ->getMock(); $orderMock->expects($this->once()) ->method('formatPrice') ->with($price, false) ->willReturn($formattedPrice); $orderItemMock = $this->getMockBuilder(Item::class) ->disableOriginalConstructor() ->setMethods(['getOrder', '__wakeup']) ->getMock(); $orderItemMock->expects($this->once()) ->method('getOrder') ->willReturn($orderMock); $invoiceItemMock = $this->getMockBuilder(InvoiceItem::class) ->disableOriginalConstructor() ->setMethods(['getOrderItem', '__wakeup', 'getStoreId']) ->getMock(); $invoiceItemMock->expects($this->once()) ->method('getOrderItem') ->willReturn($orderItemMock); $this->renderer->setItem($invoiceItemMock); $this->assertEquals($formattedPrice, $this->renderer->formatPrice($price)); } public function testGetZone() { $this->assertEquals(Render::ZONE_CART, $this->renderer->getZone()); } public function testGetStoreId() { $storeId = 'default'; $itemMock = $this->getMockBuilder(\Magento\Quote\Model\Quote\Item::class) ->disableOriginalConstructor() ->setMethods(['getStoreId', '__wakeup']) ->getMock(); $itemMock->expects($this->once()) ->method('getStoreId') ->willReturn($storeId); $this->renderer->setItem($itemMock); $this->assertEquals($storeId, $this->renderer->getStoreId()); } public function testGetItemDisplayPriceExclTaxQuoteItem() { $price = 10; /** @var \Magento\Quote\Model\Quote\Item|MockObject $quoteItemMock */ $quoteItemMock = $this->getMockBuilder(\Magento\Quote\Model\Quote\Item::class) ->disableOriginalConstructor() ->setMethods(['getCalculationPrice', '__wakeup']) ->getMock(); $quoteItemMock->expects($this->once()) ->method('getCalculationPrice') ->willReturn($price); $this->renderer->setItem($quoteItemMock); $this->assertEquals($price, $this->renderer->getItemDisplayPriceExclTax()); } public function testGetItemDisplayPriceExclTaxOrderItem() { $price = 10; /** @var Item|MockObject $orderItemMock */ $orderItemMock = $this->getMockBuilder(Item::class) ->disableOriginalConstructor() ->setMethods(['getPrice', '__wakeup']) ->getMock(); $orderItemMock->expects($this->once()) ->method('getPrice') ->willReturn($price); $this->renderer->setItem($orderItemMock); $this->assertEquals($price, $this->renderer->getItemDisplayPriceExclTax()); } public function testGetTotalAmount() { $rowTotal = 100; $taxAmount = 10; $discountTaxCompensationAmount = 2; $discountAmount = 20; $expectedValue = $rowTotal + $taxAmount + $discountTaxCompensationAmount - $discountAmount; $itemMock = $this->getMockBuilder(Item::class) ->disableOriginalConstructor() ->setMethods( [ 'getRowTotal', 'getTaxAmount', 'getDiscountTaxCompensationAmount', 'getDiscountAmount', '__wakeup' ] ) ->getMock(); $itemMock->expects($this->once()) ->method('getRowTotal') ->willReturn($rowTotal); $itemMock->expects($this->once()) ->method('getTaxAmount') ->willReturn($taxAmount); $itemMock->expects($this->once()) ->method('getDiscountTaxCompensationAmount') ->willReturn($discountTaxCompensationAmount); $itemMock->expects($this->once()) ->method('getDiscountAmount') ->willReturn($discountAmount); $this->assertEquals($expectedValue, $this->renderer->getTotalAmount($itemMock)); } public function testGetBaseTotalAmount() { $baseRowTotal = 100; $baseTaxAmount = 10; $baseDiscountTaxCompensationAmount = 2; $baseDiscountAmount = 20; $expectedValue = 92; $itemMock = $this->getMockBuilder(Item::class) ->disableOriginalConstructor() ->setMethods( [ 'getBaseRowTotal', 'getBaseTaxAmount', 'getBaseDiscountTaxCompensationAmount', 'getBaseDiscountAmount', '__wakeup' ] ) ->getMock(); $itemMock->expects($this->once()) ->method('getBaseRowTotal') ->willReturn($baseRowTotal); $itemMock->expects($this->once()) ->method('getBaseTaxAmount') ->willReturn($baseTaxAmount); $itemMock->expects($this->once()) ->method('getBaseDiscountTaxCompensationAmount') ->willReturn($baseDiscountTaxCompensationAmount); $itemMock->expects($this->once()) ->method('getBaseDiscountAmount') ->willReturn($baseDiscountAmount); $this->assertEquals($expectedValue, $this->renderer->getBaseTotalAmount($itemMock)); } }