![]() 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/cartforge.co/vendor/magento/module-directory/Test/Unit/Model/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Directory\Test\Unit\Model; use Magento\Directory\Model\Currency; use Magento\Directory\Model\CurrencyFactory; use Magento\Directory\Model\PriceCurrency; use Magento\Framework\Pricing\PriceCurrencyInterface; use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; use Magento\Store\Model\Store; use Magento\Store\Model\StoreManager; use Magento\Store\Model\StoreManagerInterface; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; class PriceCurrencyTest extends TestCase { /** * @var PriceCurrency */ protected $priceCurrency; /** * @var StoreManagerInterface|MockObject */ protected $storeManager; /** * @var CurrencyFactory|MockObject */ protected $currencyFactory; protected function setUp(): void { $this->storeManager = $this->getMockBuilder(StoreManager::class) ->disableOriginalConstructor() ->getMock(); $this->currencyFactory = $this->getMockBuilder(CurrencyFactory::class) ->disableOriginalConstructor() ->setMethods(['create']) ->getMock(); $objectManager = new ObjectManager($this); $this->priceCurrency = $objectManager->getObject( PriceCurrency::class, [ 'storeManager' => $this->storeManager, 'currencyFactory' => $this->currencyFactory ] ); } public function testConvert() { $amount = 5.6; $convertedAmount = 9.3; $currency = $this->getCurrentCurrencyMock(); $baseCurrency = $this->getBaseCurrencyMock($amount, $convertedAmount, $currency); $store = $this->getStoreMock($baseCurrency); $this->assertEquals($convertedAmount, $this->priceCurrency->convert($amount, $store, $currency)); } public function testConvertWithStoreCode() { $amount = 5.6; $storeCode = 2; $convertedAmount = 9.3; $currency = $this->getCurrentCurrencyMock(); $baseCurrency = $this->getBaseCurrencyMock($amount, $convertedAmount, $currency); $store = $this->getStoreMock($baseCurrency); $this->storeManager->expects($this->once()) ->method('getStore') ->with($storeCode) ->willReturn($store); $this->assertEquals($convertedAmount, $this->priceCurrency->convert($amount, $storeCode, $currency)); } public function testConvertWithCurrencyString() { $amount = 5.6; $currency = 'ru'; $convertedAmount = 9.3; $currentCurrency = $this->getCurrentCurrencyMock(); $currentCurrency->expects($this->once()) ->method('load') ->with($currency)->willReturnSelf(); $this->currencyFactory->expects($this->once()) ->method('create') ->willReturn($currentCurrency); $baseCurrency = $this->getBaseCurrencyMock($amount, $convertedAmount, $currentCurrency); $baseCurrency->expects($this->once()) ->method('getRate') ->with($currentCurrency) ->willReturn(1.2); $store = $this->getStoreMock($baseCurrency); $this->assertEquals($convertedAmount, $this->priceCurrency->convert($amount, $store, $currency)); } public function testConvertWithStoreCurrency() { $amount = 5.6; $currency = null; $convertedAmount = 9.3; $currentCurrency = $this->getCurrentCurrencyMock(); $baseCurrency = $this->getBaseCurrencyMock($amount, $convertedAmount, $currentCurrency); $store = $this->getStoreMock($baseCurrency); $store->expects($this->atLeastOnce()) ->method('getCurrentCurrency') ->willReturn($currentCurrency); $this->assertEquals($convertedAmount, $this->priceCurrency->convert($amount, $store, $currency)); } public function testFormat() { $amount = 5.6; $precision = PriceCurrencyInterface::DEFAULT_PRECISION; $includeContainer = false; $store = null; $formattedAmount = '5.6 grn'; $currency = $this->getCurrentCurrencyMock(); $currency->expects($this->once()) ->method('formatPrecision') ->with($amount, $precision, [], $includeContainer) ->willReturn($formattedAmount); $this->assertEquals($formattedAmount, $this->priceCurrency->format( $amount, $includeContainer, $precision, $store, $currency )); } public function testConvertAndFormat() { $amount = 5.6; $precision = PriceCurrencyInterface::DEFAULT_PRECISION; $includeContainer = false; $store = null; $convertedAmount = 9.3; $formattedAmount = '9.3 grn'; $currency = $this->getCurrentCurrencyMock(); $baseCurrency = $this->getBaseCurrencyMock($amount, $convertedAmount, $currency); $store = $this->getStoreMock($baseCurrency); $currency->expects($this->once()) ->method('formatPrecision') ->with($convertedAmount, $precision, [], $includeContainer) ->willReturn($formattedAmount); $this->assertEquals($formattedAmount, $this->priceCurrency->convertAndFormat( $amount, $includeContainer, $precision, $store, $currency )); } public function testGetCurrencySymbol() { $storeId = 2; $currencySymbol = '$'; $currencyMock = $this->getCurrentCurrencyMock(); $currencyMock->expects($this->once()) ->method('getCurrencySymbol') ->willReturn($currencySymbol); $this->assertEquals($currencySymbol, $this->priceCurrency->getCurrencySymbol($storeId, $currencyMock)); } /** * @return MockObject */ protected function getCurrentCurrencyMock() { $currency = $this->getMockBuilder(Currency::class) ->disableOriginalConstructor() ->getMock(); return $currency; } /** * @param $baseCurrency * @return MockObject */ protected function getStoreMock($baseCurrency) { $store = $this->getMockBuilder(Store::class) ->disableOriginalConstructor() ->getMock(); $store->expects($this->atLeastOnce()) ->method('getBaseCurrency') ->willReturn($baseCurrency); return $store; } /** * @param $amount * @param $convertedAmount * @param $currency * @return MockObject */ protected function getBaseCurrencyMock($amount, $convertedAmount, $currency) { $baseCurrency = $this->getMockBuilder(Currency::class) ->disableOriginalConstructor() ->getMock(); $baseCurrency->expects($this->once()) ->method('convert') ->with($amount, $currency) ->willReturn($convertedAmount); return $baseCurrency; } public function testConvertAndRound() { $amount = 5.6; $storeCode = 2; $convertedAmount = 9.326; $roundedConvertedAmount = 9.33; $currency = $this->getCurrentCurrencyMock(); $baseCurrency = $this->getBaseCurrencyMock($amount, $convertedAmount, $currency); $store = $this->getStoreMock($baseCurrency); $this->storeManager->expects($this->once()) ->method('getStore') ->with($storeCode) ->willReturn($store); $this->assertEquals( $roundedConvertedAmount, $this->priceCurrency->convertAndRound($amount, $storeCode, $currency) ); } }