|
Apache/2.4.41 (Ubuntu) Linux vmi616275.contaboserver.net 5.4.0-84-generic #94-Ubuntu SMP Thu Aug 26 20:27:37 UTC 2021 x86_64 uid=33(www-data) gid=33(www-data) groups=33(www-data) server ip : 62.171.164.128 | your ip : 127.0.0.1 safemode OFF > / home / a / home / dev2.destoffenstraat.com / vendor / magento / framework / Locale / Test / Unit / |
Filename | /home/a/home/dev2.destoffenstraat.com/vendor/magento/framework/Locale/Test/Unit/CurrencyTest.php |
Size | 7.03 kb |
Permission | rw-r--r-- |
Owner | root : root |
Create time | 21-Aug-2025 12:26 |
Last modified | 07-Jan-2021 21:08 |
Last accessed | 23-Aug-2025 07:57 |
Actions | edit | rename | delete | download (gzip) |
View | text | code | image |
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);
namespace Magento\Framework\Locale\Test\Unit;
use Magento\Framework\CurrencyFactory;
use Magento\Framework\Event\Manager;
use Magento\Framework\Locale\Currency;
use Magento\Framework\Locale\Resolver;
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
class CurrencyTest extends TestCase
{
/**
* @var Manager|MockObject
*/
private $mockEventManager;
/**
* @var Resolver|MockObject
*/
private $mockLocaleResolver;
/**
* @var CurrencyFactory|MockObject
*/
private $mockCurrencyFactory;
/**
* @var Currency
*/
private $testCurrencyObject;
const TEST_NONCACHED_CURRENCY = 'USD';
const TEST_NONCACHED_CURRENCY_LOCALE = 'en_US';
const TEST_CACHED_CURRENCY = 'CAD';
const TEST_CACHED_CURRENCY_LOCALE = 'en_CA';
const TEST_NONEXISTENT_CURRENCY = 'QQQ';
const TEST_NONEXISTENT_CURRENCY_LOCALE = 'fr_FR';
const TEST_EXCEPTION_CURRENCY = 'ZZZ';
const TEST_EXCEPTION_CURRENCY_LOCALE = 'es_ES';
protected function setUp(): void
{
$this->mockEventManager = $this
->getMockBuilder(Manager::class)
->disableOriginalConstructor()
->getMock();
$this->mockLocaleResolver = $this
->getMockBuilder(Resolver::class)
->disableOriginalConstructor()
->getMock();
$this->mockCurrencyFactory = $this
->getMockBuilder(CurrencyFactory::class)
->disableOriginalConstructor()
->getMock();
$this->testCurrencyObject = (new ObjectManager($this))
->getObject(
Currency::class,
[
'eventManager' => $this->mockEventManager,
'localeResolver' => $this->mockLocaleResolver,
'currencyFactory' => $this->mockCurrencyFactory,
]
);
}
public function testGetDefaultCurrency()
{
$expectedDefaultCurrency = Currency::DEFAULT_CURRENCY;
$retrievedDefaultCurrency = $this->testCurrencyObject->getDefaultCurrency();
$this->assertEquals($expectedDefaultCurrency, $retrievedDefaultCurrency);
}
public function testGetCurrencyNonCached()
{
$options = new \Zend_Currency(null, self::TEST_NONCACHED_CURRENCY_LOCALE);
$this->mockCurrencyFactory
->expects($this->once())
->method('create')
->willReturn($options);
$this->mockEventManager
->expects($this->once())
->method('dispatch');
$retrievedCurrencyObject = $this->testCurrencyObject
->getCurrency(self::TEST_NONCACHED_CURRENCY);
$this->assertInstanceOf('Zend_Currency', $retrievedCurrencyObject);
$this->assertEquals(self::TEST_NONCACHED_CURRENCY_LOCALE, $retrievedCurrencyObject->getLocale());
$this->assertEquals('US Dollar', $retrievedCurrencyObject->getName());
$this->assertEquals([self::TEST_NONCACHED_CURRENCY], $retrievedCurrencyObject->getCurrencyList());
}
public function testGetCurrencyCached()
{
$options = new \Zend_Currency(null, self::TEST_CACHED_CURRENCY_LOCALE);
$this->mockCurrencyFactory
->expects($this->once())
->method('create')
->willReturn($options);
$this->mockEventManager
->expects($this->once())
->method('dispatch');
$retrievedCurrencyObject = $this->testCurrencyObject
->getCurrency(self::TEST_CACHED_CURRENCY);
$this->assertInstanceOf('Zend_Currency', $retrievedCurrencyObject);
$this->assertEquals(self::TEST_CACHED_CURRENCY_LOCALE, $retrievedCurrencyObject->getLocale());
$this->assertEquals('Canadian Dollar', $retrievedCurrencyObject->getName());
$this->assertEquals([self::TEST_CACHED_CURRENCY], $retrievedCurrencyObject->getCurrencyList());
/*
* Since the CAD currency object was previously retrieved, getCurrency()
* should return the previously created and cached currency object for CAD, rather
* than creating another one.
*/
$this->mockCurrencyFactory
->expects($this->never())
->method('create')
->willReturn($options);
$this->mockEventManager
->expects($this->never())
->method('dispatch');
$retrievedCurrencyObject = $this->testCurrencyObject
->getCurrency(self::TEST_CACHED_CURRENCY);
$this->assertInstanceOf('Zend_Currency', $retrievedCurrencyObject);
$this->assertEquals(self::TEST_CACHED_CURRENCY_LOCALE, $retrievedCurrencyObject->getLocale());
$this->assertEquals('Canadian Dollar', $retrievedCurrencyObject->getName());
$this->assertEquals([self::TEST_CACHED_CURRENCY], $retrievedCurrencyObject->getCurrencyList());
}
public function testGetNonExistentCurrency()
{
$options = new \Zend_Currency(null, self::TEST_NONEXISTENT_CURRENCY_LOCALE);
$this->mockCurrencyFactory
->expects($this->once())
->method('create')
->willReturn($options);
$this->mockEventManager
->expects($this->once())
->method('dispatch');
$this->mockEventManager
->expects($this->once())
->method('dispatch');
$retrievedCurrencyObject = $this->testCurrencyObject
->getCurrency(self::TEST_NONEXISTENT_CURRENCY);
$this->assertInstanceOf('Zend_Currency', $retrievedCurrencyObject);
$this->assertEquals(self::TEST_NONEXISTENT_CURRENCY_LOCALE, $retrievedCurrencyObject->getLocale());
$this->assertEquals('euro', $retrievedCurrencyObject->getName());
$this->assertEquals(['EUR'], $retrievedCurrencyObject->getCurrencyList());
}
public function testExceptionCase()
{
$options = new \Zend_Currency(null, self::TEST_EXCEPTION_CURRENCY_LOCALE);
$this->mockCurrencyFactory
->expects($this->at(0))
->method('create')
->willThrowException(new \Exception());
$this->mockCurrencyFactory
->expects($this->at(1))
->method('create')
->willReturn($options);
$this->mockEventManager
->expects($this->once())
->method('dispatch');
$this->mockLocaleResolver
->expects($this->exactly(5))
->method('getLocale');
$retrievedCurrencyObject = $this->testCurrencyObject
->getCurrency(self::TEST_EXCEPTION_CURRENCY);
$this->assertInstanceOf('Zend_Currency', $retrievedCurrencyObject);
$this->assertEquals(self::TEST_EXCEPTION_CURRENCY_LOCALE, $retrievedCurrencyObject->getLocale());
$this->assertEquals(self::TEST_EXCEPTION_CURRENCY, $retrievedCurrencyObject->getName());
$this->assertEquals(['EUR'], $retrievedCurrencyObject->getCurrencyList());
}
}
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);
namespace Magento\Framework\Locale\Test\Unit;
use Magento\Framework\CurrencyFactory;
use Magento\Framework\Event\Manager;
use Magento\Framework\Locale\Currency;
use Magento\Framework\Locale\Resolver;
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
class CurrencyTest extends TestCase
{
/**
* @var Manager|MockObject
*/
private $mockEventManager;
/**
* @var Resolver|MockObject
*/
private $mockLocaleResolver;
/**
* @var CurrencyFactory|MockObject
*/
private $mockCurrencyFactory;
/**
* @var Currency
*/
private $testCurrencyObject;
const TEST_NONCACHED_CURRENCY = 'USD';
const TEST_NONCACHED_CURRENCY_LOCALE = 'en_US';
const TEST_CACHED_CURRENCY = 'CAD';
const TEST_CACHED_CURRENCY_LOCALE = 'en_CA';
const TEST_NONEXISTENT_CURRENCY = 'QQQ';
const TEST_NONEXISTENT_CURRENCY_LOCALE = 'fr_FR';
const TEST_EXCEPTION_CURRENCY = 'ZZZ';
const TEST_EXCEPTION_CURRENCY_LOCALE = 'es_ES';
protected function setUp(): void
{
$this->mockEventManager = $this
->getMockBuilder(Manager::class)
->disableOriginalConstructor()
->getMock();
$this->mockLocaleResolver = $this
->getMockBuilder(Resolver::class)
->disableOriginalConstructor()
->getMock();
$this->mockCurrencyFactory = $this
->getMockBuilder(CurrencyFactory::class)
->disableOriginalConstructor()
->getMock();
$this->testCurrencyObject = (new ObjectManager($this))
->getObject(
Currency::class,
[
'eventManager' => $this->mockEventManager,
'localeResolver' => $this->mockLocaleResolver,
'currencyFactory' => $this->mockCurrencyFactory,
]
);
}
public function testGetDefaultCurrency()
{
$expectedDefaultCurrency = Currency::DEFAULT_CURRENCY;
$retrievedDefaultCurrency = $this->testCurrencyObject->getDefaultCurrency();
$this->assertEquals($expectedDefaultCurrency, $retrievedDefaultCurrency);
}
public function testGetCurrencyNonCached()
{
$options = new \Zend_Currency(null, self::TEST_NONCACHED_CURRENCY_LOCALE);
$this->mockCurrencyFactory
->expects($this->once())
->method('create')
->willReturn($options);
$this->mockEventManager
->expects($this->once())
->method('dispatch');
$retrievedCurrencyObject = $this->testCurrencyObject
->getCurrency(self::TEST_NONCACHED_CURRENCY);
$this->assertInstanceOf('Zend_Currency', $retrievedCurrencyObject);
$this->assertEquals(self::TEST_NONCACHED_CURRENCY_LOCALE, $retrievedCurrencyObject->getLocale());
$this->assertEquals('US Dollar', $retrievedCurrencyObject->getName());
$this->assertEquals([self::TEST_NONCACHED_CURRENCY], $retrievedCurrencyObject->getCurrencyList());
}
public function testGetCurrencyCached()
{
$options = new \Zend_Currency(null, self::TEST_CACHED_CURRENCY_LOCALE);
$this->mockCurrencyFactory
->expects($this->once())
->method('create')
->willReturn($options);
$this->mockEventManager
->expects($this->once())
->method('dispatch');
$retrievedCurrencyObject = $this->testCurrencyObject
->getCurrency(self::TEST_CACHED_CURRENCY);
$this->assertInstanceOf('Zend_Currency', $retrievedCurrencyObject);
$this->assertEquals(self::TEST_CACHED_CURRENCY_LOCALE, $retrievedCurrencyObject->getLocale());
$this->assertEquals('Canadian Dollar', $retrievedCurrencyObject->getName());
$this->assertEquals([self::TEST_CACHED_CURRENCY], $retrievedCurrencyObject->getCurrencyList());
/*
* Since the CAD currency object was previously retrieved, getCurrency()
* should return the previously created and cached currency object for CAD, rather
* than creating another one.
*/
$this->mockCurrencyFactory
->expects($this->never())
->method('create')
->willReturn($options);
$this->mockEventManager
->expects($this->never())
->method('dispatch');
$retrievedCurrencyObject = $this->testCurrencyObject
->getCurrency(self::TEST_CACHED_CURRENCY);
$this->assertInstanceOf('Zend_Currency', $retrievedCurrencyObject);
$this->assertEquals(self::TEST_CACHED_CURRENCY_LOCALE, $retrievedCurrencyObject->getLocale());
$this->assertEquals('Canadian Dollar', $retrievedCurrencyObject->getName());
$this->assertEquals([self::TEST_CACHED_CURRENCY], $retrievedCurrencyObject->getCurrencyList());
}
public function testGetNonExistentCurrency()
{
$options = new \Zend_Currency(null, self::TEST_NONEXISTENT_CURRENCY_LOCALE);
$this->mockCurrencyFactory
->expects($this->once())
->method('create')
->willReturn($options);
$this->mockEventManager
->expects($this->once())
->method('dispatch');
$this->mockEventManager
->expects($this->once())
->method('dispatch');
$retrievedCurrencyObject = $this->testCurrencyObject
->getCurrency(self::TEST_NONEXISTENT_CURRENCY);
$this->assertInstanceOf('Zend_Currency', $retrievedCurrencyObject);
$this->assertEquals(self::TEST_NONEXISTENT_CURRENCY_LOCALE, $retrievedCurrencyObject->getLocale());
$this->assertEquals('euro', $retrievedCurrencyObject->getName());
$this->assertEquals(['EUR'], $retrievedCurrencyObject->getCurrencyList());
}
public function testExceptionCase()
{
$options = new \Zend_Currency(null, self::TEST_EXCEPTION_CURRENCY_LOCALE);
$this->mockCurrencyFactory
->expects($this->at(0))
->method('create')
->willThrowException(new \Exception());
$this->mockCurrencyFactory
->expects($this->at(1))
->method('create')
->willReturn($options);
$this->mockEventManager
->expects($this->once())
->method('dispatch');
$this->mockLocaleResolver
->expects($this->exactly(5))
->method('getLocale');
$retrievedCurrencyObject = $this->testCurrencyObject
->getCurrency(self::TEST_EXCEPTION_CURRENCY);
$this->assertInstanceOf('Zend_Currency', $retrievedCurrencyObject);
$this->assertEquals(self::TEST_EXCEPTION_CURRENCY_LOCALE, $retrievedCurrencyObject->getLocale());
$this->assertEquals(self::TEST_EXCEPTION_CURRENCY, $retrievedCurrencyObject->getName());
$this->assertEquals(['EUR'], $retrievedCurrencyObject->getCurrencyList());
}
}