CacheBootstrapperTest::tearDown()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 4
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 6
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace AbterPhp\Framework\Bootstrappers\Cache;
6
7
use AbterPhp\Framework\Constant\Env;
8
use AbterPhp\Framework\Environments\Environment;
9
use Opulence\Cache\ArrayBridge;
10
use Opulence\Cache\FileBridge;
11
use Opulence\Cache\ICacheBridge;
12
use Opulence\Cache\MemcachedBridge;
13
use Opulence\Cache\RedisBridge;
14
use Opulence\Framework\Configuration\Config;
15
use Opulence\Ioc\Container;
16
use Opulence\Memcached\Memcached;
17
use Opulence\Redis\Redis;
18
use PHPUnit\Framework\TestCase;
19
20
class CacheBootstrapperTest extends TestCase
21
{
22
    /** @var CacheBootstrapper - System Under Test */
23
    protected CacheBootstrapper $sut;
24
25
    public function setUp(): void
26
    {
27
        Environment::unsetVar(Env::ENV_NAME);
28
29
        $this->sut = new CacheBootstrapper();
30
    }
31
32
    protected function tearDown(): void
33
    {
34
        Config::set('cache', 'file.path', '');
35
        Config::set('cache', 'cache.bridge', '');
36
        Config::set('cache', 'cache.clientName', '');
37
        Config::set('cache', 'cache.keyPrefix', '');
38
    }
39
40
    public function testRegisterBindingsFileBridge(): void
41
    {
42
        Config::set('cache', 'file.path', '/tmp');
43
44
        $container = new Container();
45
46
        $this->sut->registerBindings($container);
47
48
        $actual = $container->resolve(ICacheBridge::class);
49
        $this->assertInstanceOf(FileBridge::class, $actual);
50
    }
51
52
    public function testRegisterBindingsArrayBridge(): void
53
    {
54
        Config::set('cache', 'cache.bridge', ArrayBridge::class);
55
56
        $container = new Container();
57
58
        $this->sut->registerBindings($container);
59
60
        $actual = $container->resolve(ICacheBridge::class);
61
        $this->assertInstanceOf(ArrayBridge::class, $actual);
62
    }
63
64
    public function testRegisterBindingsMemcachedBridge(): void
65
    {
66
        Config::set('cache', 'cache.bridge', MemcachedBridge::class);
67
        Config::set('cache', 'cache.clientName', 'foo');
68
        Config::set('cache', 'cache.keyPrefix', 'bar');
69
70
        $mockMemcached = $this->getMockBuilder(Memcached::class)->disableOriginalConstructor()->getMock();
71
72
        $container = new Container();
73
        $container->bindInstance(Memcached::class, $mockMemcached);
74
75
        $this->sut->registerBindings($container);
76
77
        $actual = $container->resolve(ICacheBridge::class);
78
        $this->assertInstanceOf(MemcachedBridge::class, $actual);
79
    }
80
81
    public function testRegisterBindingsRedisBridge(): void
82
    {
83
        Config::set('cache', 'cache.bridge', RedisBridge::class);
84
        Config::set('cache', 'cache.clientName', 'foo');
85
        Config::set('cache', 'cache.keyPrefix', 'bar');
86
87
        $mockRedis = $this->getMockBuilder(Redis::class)->disableOriginalConstructor()->getMock();
88
89
        $container = new Container();
90
        $container->bindInstance(Redis::class, $mockRedis);
91
92
        $this->sut->registerBindings($container);
93
94
        $actual = $container->resolve(ICacheBridge::class);
95
        $this->assertInstanceOf(RedisBridge::class, $actual);
96
    }
97
}
98