est.php$0   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 19
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 0
Metric Value
wmc 2
lcom 1
cbo 1
dl 0
loc 19
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace BenTools\Currency\Tests\Provider;
4
5
use BenTools\Currency\Cache\ArrayCache;
6
use BenTools\Currency\Model\Currency;
7
use BenTools\Currency\Model\CurrencyInterface;
8
use BenTools\Currency\Model\ExchangeRate;
9
use BenTools\Currency\Model\ExchangeRateInterface;
10
use BenTools\Currency\Provider\ExchangeRateProviderInterface;
11
use BenTools\Currency\Provider\PSR16CacheProvider;
12
use DateTimeInterface;
13
use PHPUnit\Framework\TestCase;
14
15
class PSR16CacheProviderTest extends TestCase
16
{
17
18
    public function testGetExchangeRate()
19
    {
20
21
        $liveProvider = new class implements ExchangeRateProviderInterface
22
        {
23
            private $counter = 0;
24
25
            public function getExchangeRate(CurrencyInterface $sourceCurrency, CurrencyInterface $targetCurrency, DateTimeInterface $date = null): ExchangeRateInterface
26
            {
27
                $this->counter++;
28
                return new ExchangeRate($sourceCurrency, $targetCurrency, 0.812);
29
            }
30
31
            /**
32
             * @return int
33
             */
34
            public function getCounter(): int
35
            {
36
                return $this->counter;
37
            }
38
39
        };
40
41
        $cache = new ArrayCache();
42
        $cachedProvider = new PSR16CacheProvider($liveProvider, $cache);
43
44
        $EUR = new Currency('EUR');
45
        $USD = new Currency('USD');
46
47
        $exchangeRate = $cachedProvider->getExchangeRate($USD, $EUR);
48
        $this->assertEquals(0.812, $exchangeRate->getRatio());
49
        $this->assertEquals(1, $liveProvider->getCounter());
50
51
        $exchangeRate = $cachedProvider->getExchangeRate($USD, $EUR);
52
        $this->assertEquals(0.812, $exchangeRate->getRatio());
53
        $this->assertEquals(1, $liveProvider->getCounter());
54
55
    }
56
57
}
58