Skip to content

Commit

Permalink
Merge c2408ad into 378d931
Browse files Browse the repository at this point in the history
  • Loading branch information
rdarcy1 committed Feb 10, 2021
2 parents 378d931 + c2408ad commit 96c4b7c
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 3 deletions.
5 changes: 3 additions & 2 deletions src/ExchangeRateProvider/BaseCurrencyProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

namespace Brick\Money\ExchangeRateProvider;

use Brick\Math\BigNumber;
use Brick\Money\ExchangeRateProvider;

use Brick\Math\BigRational;
Expand Down Expand Up @@ -46,10 +47,10 @@ public function __construct(ExchangeRateProvider $provider, string $baseCurrency
/**
* {@inheritdoc}
*/
public function getExchangeRate(string $sourceCurrencyCode, string $targetCurrencyCode)
public function getExchangeRate(string $sourceCurrencyCode, string $targetCurrencyCode): BigNumber
{
if ($sourceCurrencyCode === $this->baseCurrencyCode) {
return $this->provider->getExchangeRate($sourceCurrencyCode, $targetCurrencyCode);
return BigNumber::of($this->provider->getExchangeRate($sourceCurrencyCode, $targetCurrencyCode));
}

if ($targetCurrencyCode === $this->baseCurrencyCode) {
Expand Down
24 changes: 23 additions & 1 deletion tests/ExchangeRateProvider/BaseCurrencyProviderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

namespace Brick\Money\Tests\ExchangeRateProvider;

use Brick\Math\BigNumber;
use Brick\Money\ExchangeRateProvider;
use Brick\Money\ExchangeRateProvider\BaseCurrencyProvider;
use Brick\Money\ExchangeRateProvider\ConfigurableProvider;
Expand Down Expand Up @@ -38,7 +39,7 @@ private function getExchangeRateProvider() : ExchangeRateProvider
public function testGetExchangeRate(string $sourceCurrencyCode, string $targetCurrencyCode, string $exchangeRate) : void
{
$rate = $this->getExchangeRateProvider()->getExchangeRate($sourceCurrencyCode, $targetCurrencyCode);
self::assertSame($exchangeRate, (string) BigRational::of($rate)->toScale(6, RoundingMode::DOWN));
self::assertSame($exchangeRate, (string) $rate->toScale(6, RoundingMode::DOWN));
}

public function providerGetExchangeRate() : array
Expand All @@ -60,4 +61,25 @@ public function providerGetExchangeRate() : array
['CAD', 'GBP', '0.727272'],
];
}

/**
* @dataProvider providerReturnBigNumber
*
* @param BigNumber|float|int|string $rate
*/
public function testReturnBigNumber($rate) : void
{
$configurableProvider = new ConfigurableProvider();
$configurableProvider->setExchangeRate('USD', 'EUR', $rate);
$baseProvider = new BaseCurrencyProvider($configurableProvider, 'USD');

$rate = $baseProvider->getExchangeRate('USD', 'EUR');

$this->assertEquals(BigNumber::of($rate), $rate);
}

public function providerReturnBigNumber() : array
{
return [[1], [1.1], ['1.0'], [BigNumber::of('1')]];
}
}

0 comments on commit 96c4b7c

Please sign in to comment.