/** * @depends testAttemptToOverrideISOCurrency */ public function testAttemptToRemoveISOCurrency() { $euro = ISOCurrencyProvider::getInstance()->getCurrency('EUR'); DefaultCurrencyProvider::getInstance()->removeCurrency($euro); $isoCurrencies = ISOCurrencyProvider::getInstance()->getAvailableCurrencies(); $this->assertCurrencyProviderContains($isoCurrencies, DefaultCurrencyProvider::getInstance()); }
/** * Private constructor. Use `getInstance()` to obtain the singleton instance. */ private function __construct() { $this->configurableCurrencyProvider = new ConfigurableCurrencyProvider(); $this->currencyProviderChain = new CurrencyProviderChain(); $this->currencyProviderChain->addCurrencyProvider(ISOCurrencyProvider::getInstance()); $this->currencyProviderChain->addCurrencyProvider($this->configurableCurrencyProvider); }
public function testGetAvailableCurrencies() { $providerChain = $this->createCurrencyProviderChain(); // Add a different GBP instance, that comes after the first one. // The first instance available in the chain takes precedence. $provider = new ConfigurableCurrencyProvider(); $provider->addCurrency(Currency::create('GBP', 999, 'A competing GBP instance', 6)); $providerChain->addCurrencyProvider($provider); $isoCurrencyProvider = ISOCurrencyProvider::getInstance(); $this->assertCurrencyProviderContains(['EUR' => $isoCurrencyProvider->getCurrency('EUR'), 'GBP' => $isoCurrencyProvider->getCurrency('GBP'), 'USD' => $isoCurrencyProvider->getCurrency('USD'), 'CAD' => $isoCurrencyProvider->getCurrency('CAD')], $providerChain); }
public function testGetAvailableCurrencies() { $provider = ISOCurrencyProvider::getInstance(); $eur = $provider->getCurrency('EUR'); $gbp = $provider->getCurrency('GBP'); $usd = $provider->getCurrency('USD'); $availableCurrencies = $provider->getAvailableCurrencies(); $this->assertGreaterThan(100, count($availableCurrencies)); foreach ($availableCurrencies as $currency) { $this->assertInstanceOf(Currency::class, $currency); } $this->assertSame($eur, $availableCurrencies['EUR']); $this->assertSame($gbp, $availableCurrencies['GBP']); $this->assertSame($usd, $availableCurrencies['USD']); }