Passed
Pull Request — master (#251)
by Gabriel
10:21
created

FilesystemCacheTest   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Importance

Changes 0
Metric Value
wmc 4
c 0
b 0
f 0
lcom 1
cbo 3
dl 0
loc 51
rs 10
1
<?php
2
3
namespace Doctrine\Tests\Common\Cache;
4
5
use Doctrine\Common\Cache\Cache;
6
use Doctrine\Common\Cache\CacheProvider;
7
use Doctrine\Common\Cache\FilesystemCache;
8
9
/**
10
 * @group DCOM-101
11
 */
12
class FilesystemCacheTest extends BaseFileCacheTest
13
{
14
    public function testGetStats() : void
15
    {
16
        $cache = $this->_getCacheDriver();
17
        $stats = $cache->getStats();
18
19
        self::assertNull($stats[Cache::STATS_HITS]);
20
        self::assertNull($stats[Cache::STATS_MISSES]);
21
        self::assertNull($stats[Cache::STATS_UPTIME]);
22
        self::assertEquals(0, $stats[Cache::STATS_MEMORY_USAGE]);
23
        self::assertGreaterThan(0, $stats[Cache::STATS_MEMORY_AVAILABLE]);
24
    }
25
26
    public function testCacheInSharedDirectoryIsPerExtension() : void
27
    {
28
        $cache1 = new FilesystemCache($this->directory, '.foo');
29
        $cache2 = new FilesystemCache($this->directory, '.bar');
30
31
        self::assertTrue($cache1->save('key1', 11));
32
        self::assertTrue($cache1->save('key2', 12));
33
34
        self::assertTrue($cache2->save('key1', 21));
35
        self::assertTrue($cache2->save('key2', 22));
36
37
        self::assertSame(11, $cache1->fetch('key1'), 'Cache value must not be influenced by a different cache in the same directory but different extension');
38
        self::assertSame(12, $cache1->fetch('key2'));
39
        self::assertTrue($cache1->flushAll());
40
        self::assertFalse($cache1->fetch('key1'), 'flushAll() must delete all items with the current extension');
41
        self::assertFalse($cache1->fetch('key2'));
42
43
        self::assertSame(21, $cache2->fetch('key1'), 'flushAll() must not remove items with a different extension in a shared directory');
44
        self::assertSame(22, $cache2->fetch('key2'));
45
    }
46
47
    public function testFlushAllWithNoExtension() : void
48
    {
49
        $cache = new FilesystemCache($this->directory, '');
50
51
        self::assertTrue($cache->save('key1', 1));
52
        self::assertTrue($cache->save('key2', 2));
53
        self::assertTrue($cache->flushAll());
54
        self::assertFalse($cache->contains('key1'));
55
        self::assertFalse($cache->contains('key2'));
56
    }
57
58
    protected function _getCacheDriver() : CacheProvider
59
    {
60
        return new FilesystemCache($this->directory);
61
    }
62
}
63