Completed
Pull Request — master (#1)
by Joao
02:45
created

CachePoolTest::setUp()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
c 0
b 0
f 0
rs 10
cc 1
eloc 1
nc 1
nop 0
1
<?php
2
/**
3
 * User: jg
4
 * Date: 04/02/17
5
 * Time: 18:21
6
 */
7
8
9
use ByJG\Cache\Psr\CachePool;
10
11
12
class CachePoolTest extends PHPUnit_Framework_TestCase
0 ignored issues
show
Coding Style Compatibility introduced by
PSR1 recommends that each class must be in a namespace of at least one level to avoid collisions.

You can fix this by adding a namespace to your class:

namespace YourVendor;

class YourClass { }

When choosing a vendor namespace, try to pick something that is not too generic to avoid conflicts with other libraries.

Loading history...
13
{
14
15
    protected function setUp()
16
    {
17
18
    }
19
20
    protected function tearDown()
21
    {
22
23
    }
24
25
    public function CachePoolProvider()
26
    {
27
        $memcachedServer = ['memcached-container:11211'];
28
        $redisCacheServer = 'redis-container:6379';
29
        $redisPassword = '';
30
31
        return [
32
            [
33
                new CachePool(new \ByJG\Cache\Engine\ArrayCacheEngine())
34
            ],
35
            [
36
                new CachePool(new \ByJG\Cache\Engine\FileSystemCacheEngine())
37
            ],
38
            [
39
                new CachePool(new \ByJG\Cache\Engine\ShmopCacheEngine())
40
            ],
41
            [
42
                new CachePool(new \ByJG\Cache\Engine\SessionCacheEngine())
43
            ],
44
            [
45
                new CachePool(new \ByJG\Cache\Engine\NoCacheEngine())
46
            ],
47
            [
48
                new CachePool(new \ByJG\Cache\Engine\MemcachedEngine($memcachedServer))
49
            ],
50
            [
51
                new CachePool(new \ByJG\Cache\Engine\RedisCacheEngine($redisCacheServer, $redisPassword))
52
            ]
53
        ];
54
    }
55
56
    /**
57
     * @dataProvider CachePoolProvider
58
     * @param CachePool $object
59
     */
60
    public function testGetOneItem($object)
61
    {
62
        if ($object->isAvailable()) {
63
            // First time
64
            $item = $object->getItem('chave');
65
            $this->assertFalse($item->isHit());
66
67
            // Set object
68
            $item->set('valor');
69
            $object->save($item);
70
            $this->assertTrue($item->isHit());
71
72
            // Get Object
73
            $item2 = $object->getItem('chave');
74
            $this->assertTrue($item2->isHit());
75
            $this->assertEquals('valor', $item2->get());
76
77
            // Remove
78
            $object->deleteItem('chave');
79
80
            // Check Removed
81
            $item = $object->getItem('chave');
82
            $this->assertFalse($item->isHit());
83
        } else {
84
            $this->markTestIncomplete('Object is not fully functional');
85
        }
86
    }
87
88
    /**
89
     * @dataProvider CachePoolProvider
90
     * @param CachePool $object
91
     */
92
    public function testGetMultipleItems($object)
93
    {
94
        if ($object->isAvailable()) {
95
96
            // First time
97
            $items = $object->getItems(['chave1', 'chave2']);
98
            $this->assertFalse($items[0]->isHit());
99
            $this->assertFalse($items[1]->isHit());
100
101
            // Set object
102
            $items[0]->set('valor1');
103
            $items[1]->set('valor2');
104
            $object->saveDeferred($items[0]);
105
            $object->saveDeferred($items[1]);
106
            $object->commit();
107
            $this->assertTrue($items[0]->isHit());
108
            $this->assertTrue($items[1]->isHit());
109
110
            // Get Object
111
            $item2 = $object->getItems(['chave1', 'chave2']);
112
            $this->assertTrue($item2[0]->isHit());
113
            $this->assertTrue($item2[1]->isHit());
114
            $this->assertEquals('valor1', $item2[0]->get());
115
            $this->assertEquals('valor2', $item2[1]->get());
116
117
            // Remove
118
            $object->deleteItems(['chave1', 'chave2']);
119
120
            // Check Removed
121
            $items = $object->getItems(['chave1', 'chave2']);
122
            $this->assertFalse($items[0]->isHit());
123
            $this->assertFalse($items[1]->isHit());
124
        } else {
125
            $this->markTestIncomplete('Object is not fully functional');
126
        }
127
    }
128
129
}
130