annotate core/tests/Drupal/Tests/Component/FileCache/FileCacheTest.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 4c8ae668cc8c
children
rev   line source
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 }