PSR16CacheProviderTest::testGetExchangeRate()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 38

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 38
rs 9.312
c 0
b 0
f 0
cc 1
nc 1
nop 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A PSR16CacheProviderTest.php$0 ➔ getCounter() 0 4 1
A PSR16CacheProviderTest.php$0 ➔ getExchangeRate() 0 5 1
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