Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\Tests\Component\FileCache;
|
Chris@0
|
4
|
Chris@0
|
5 use Drupal\Component\FileCache\FileCache;
|
Chris@0
|
6 use PHPUnit\Framework\TestCase;
|
Chris@0
|
7
|
Chris@0
|
8 /**
|
Chris@0
|
9 * @coversDefaultClass \Drupal\Component\FileCache\FileCache
|
Chris@0
|
10 * @group FileCache
|
Chris@0
|
11 */
|
Chris@0
|
12 class FileCacheTest extends TestCase {
|
Chris@0
|
13
|
Chris@0
|
14 /**
|
Chris@0
|
15 * FileCache object used for the tests.
|
Chris@0
|
16 *
|
Chris@0
|
17 * @var \Drupal\Component\FileCache\FileCacheInterface
|
Chris@0
|
18 */
|
Chris@0
|
19 protected $fileCache;
|
Chris@0
|
20
|
Chris@0
|
21 /**
|
Chris@0
|
22 * Static FileCache object used for verification of tests.
|
Chris@0
|
23 *
|
Chris@0
|
24 * @var \Drupal\Component\FileCache\FileCacheBackendInterface
|
Chris@0
|
25 */
|
Chris@0
|
26 protected $staticFileCache;
|
Chris@0
|
27
|
Chris@0
|
28 /**
|
Chris@0
|
29 * {@inheritdoc}
|
Chris@0
|
30 */
|
Chris@0
|
31 protected function setUp() {
|
Chris@0
|
32 parent::setUp();
|
Chris@0
|
33
|
Chris@0
|
34 $this->fileCache = new FileCache('prefix', 'test', '\Drupal\Tests\Component\FileCache\StaticFileCacheBackend', ['bin' => 'llama']);
|
Chris@0
|
35 $this->staticFileCache = new StaticFileCacheBackend(['bin' => 'llama']);
|
Chris@0
|
36 }
|
Chris@0
|
37
|
Chris@0
|
38 /**
|
Chris@0
|
39 * @covers ::get
|
Chris@0
|
40 * @covers ::__construct
|
Chris@0
|
41 */
|
Chris@0
|
42 public function testGet() {
|
Chris@0
|
43 // Test a cache miss.
|
Chris@0
|
44 $result = $this->fileCache->get(__DIR__ . '/Fixtures/no-llama-42.yml');
|
Chris@0
|
45 $this->assertNull($result);
|
Chris@0
|
46
|
Chris@0
|
47 // Test a cache hit.
|
Chris@0
|
48 $filename = __DIR__ . '/Fixtures/llama-42.txt';
|
Chris@0
|
49 $realpath = realpath($filename);
|
Chris@0
|
50 $cid = 'prefix:test:' . $realpath;
|
Chris@0
|
51 $data = [
|
Chris@0
|
52 'mtime' => filemtime($realpath),
|
Chris@0
|
53 'filepath' => $realpath,
|
Chris@0
|
54 'data' => 42,
|
Chris@0
|
55 ];
|
Chris@0
|
56
|
Chris@0
|
57 $this->staticFileCache->store($cid, $data);
|
Chris@0
|
58
|
Chris@0
|
59 $result = $this->fileCache->get($filename);
|
Chris@0
|
60 $this->assertEquals(42, $result);
|
Chris@0
|
61
|
Chris@0
|
62 // Cleanup static caches.
|
Chris@0
|
63 $this->fileCache->delete($filename);
|
Chris@0
|
64 }
|
Chris@0
|
65
|
Chris@0
|
66 /**
|
Chris@0
|
67 * @covers ::getMultiple
|
Chris@0
|
68 */
|
Chris@0
|
69 public function testGetMultiple() {
|
Chris@0
|
70 // Test a cache miss.
|
Chris@0
|
71 $result = $this->fileCache->getMultiple([__DIR__ . '/Fixtures/no-llama-42.yml']);
|
Chris@0
|
72 $this->assertEmpty($result);
|
Chris@0
|
73
|
Chris@0
|
74 // Test a cache hit.
|
Chris@0
|
75 $filename = __DIR__ . '/Fixtures/llama-42.txt';
|
Chris@0
|
76 $realpath = realpath($filename);
|
Chris@0
|
77 $cid = 'prefix:test:' . $realpath;
|
Chris@0
|
78 $data = [
|
Chris@0
|
79 'mtime' => filemtime($realpath),
|
Chris@0
|
80 'filepath' => $realpath,
|
Chris@0
|
81 'data' => 42,
|
Chris@0
|
82 ];
|
Chris@0
|
83
|
Chris@0
|
84 $this->staticFileCache->store($cid, $data);
|
Chris@0
|
85
|
Chris@0
|
86 $result = $this->fileCache->getMultiple([$filename]);
|
Chris@0
|
87 $this->assertEquals([$filename => 42], $result);
|
Chris@0
|
88
|
Chris@0
|
89 // Test a static cache hit.
|
Chris@0
|
90 $file2 = __DIR__ . '/Fixtures/llama-23.txt';
|
Chris@0
|
91 $this->fileCache->set($file2, 23);
|
Chris@0
|
92
|
Chris@0
|
93 $result = $this->fileCache->getMultiple([$filename, $file2]);
|
Chris@0
|
94 $this->assertEquals([$filename => 42, $file2 => 23], $result);
|
Chris@0
|
95
|
Chris@0
|
96 // Cleanup static caches.
|
Chris@0
|
97 $this->fileCache->delete($filename);
|
Chris@0
|
98 $this->fileCache->delete($file2);
|
Chris@0
|
99 }
|
Chris@0
|
100
|
Chris@0
|
101 /**
|
Chris@0
|
102 * @covers ::set
|
Chris@0
|
103 */
|
Chris@0
|
104 public function testSet() {
|
Chris@0
|
105 $filename = __DIR__ . '/Fixtures/llama-23.txt';
|
Chris@0
|
106 $realpath = realpath($filename);
|
Chris@0
|
107 $cid = 'prefix:test:' . $realpath;
|
Chris@0
|
108 $data = [
|
Chris@0
|
109 'mtime' => filemtime($realpath),
|
Chris@0
|
110 'filepath' => $realpath,
|
Chris@0
|
111 'data' => 23,
|
Chris@0
|
112 ];
|
Chris@0
|
113
|
Chris@0
|
114 $this->fileCache->set($filename, 23);
|
Chris@0
|
115 $result = $this->staticFileCache->fetch([$cid]);
|
Chris@0
|
116 $this->assertEquals([$cid => $data], $result);
|
Chris@0
|
117
|
Chris@0
|
118 // Cleanup static caches.
|
Chris@0
|
119 $this->fileCache->delete($filename);
|
Chris@0
|
120 }
|
Chris@0
|
121
|
Chris@0
|
122 /**
|
Chris@0
|
123 * @covers ::delete
|
Chris@0
|
124 */
|
Chris@0
|
125 public function testDelete() {
|
Chris@0
|
126 $filename = __DIR__ . '/Fixtures/llama-23.txt';
|
Chris@0
|
127 $realpath = realpath($filename);
|
Chris@0
|
128 $cid = 'prefix:test:' . $realpath;
|
Chris@0
|
129
|
Chris@0
|
130 $this->fileCache->set($filename, 23);
|
Chris@0
|
131
|
Chris@0
|
132 // Ensure data is removed after deletion.
|
Chris@0
|
133 $this->fileCache->delete($filename);
|
Chris@0
|
134
|
Chris@0
|
135 $result = $this->staticFileCache->fetch([$cid]);
|
Chris@0
|
136 $this->assertEquals([], $result);
|
Chris@0
|
137
|
Chris@0
|
138 $result = $this->fileCache->get($filename);
|
Chris@0
|
139 $this->assertNull($result);
|
Chris@0
|
140 }
|
Chris@0
|
141
|
Chris@0
|
142 }
|