‪TYPO3CMS  ‪main
TransientMemoryBackendTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
20 use PHPUnit\Framework\Attributes\Test;
24 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
25 
26 final class ‪TransientMemoryBackendTest extends UnitTestCase
27 {
28  protected bool ‪$resetSingletonInstances = true;
29 
30  #[Test]
32  {
33  $this->expectException(Exception::class);
34  $this->expectExceptionCode(1238244992);
35  $backend = new ‪TransientMemoryBackend('Testing');
36  $data = 'Some data';
37  ‪$identifier = 'MyIdentifier';
38  $backend->set(‪$identifier, $data);
39  }
40 
41  #[Test]
43  {
44  $cache = $this->createMock(FrontendInterface::class);
45  $backend = new ‪TransientMemoryBackend('Testing');
46  $backend->setCache($cache);
47  $data = 'Some data';
48  ‪$identifier = 'MyIdentifier';
49  $backend->set(‪$identifier, $data);
50  $inCache = $backend->has(‪$identifier);
51  self::assertTrue($inCache);
52  }
53 
54  #[Test]
55  public function ‪itIsPossibleToSetAndGetEntry(): void
56  {
57  $cache = $this->createMock(FrontendInterface::class);
58  $backend = new ‪TransientMemoryBackend('Testing');
59  $backend->setCache($cache);
60  $data = 'Some data';
61  ‪$identifier = 'MyIdentifier';
62  $backend->set(‪$identifier, $data);
63  $fetchedData = $backend->get(‪$identifier);
64  self::assertEquals($data, $fetchedData);
65  }
66 
67  #[Test]
68  public function ‪itIsPossibleToRemoveEntryFromCache(): void
69  {
70  $cache = $this->createMock(FrontendInterface::class);
71  $backend = new ‪TransientMemoryBackend('Testing');
72  $backend->setCache($cache);
73  $data = 'Some data';
74  ‪$identifier = 'MyIdentifier';
75  $backend->set(‪$identifier, $data);
76  $backend->remove(‪$identifier);
77  $inCache = $backend->has(‪$identifier);
78  self::assertFalse($inCache);
79  }
80 
81  #[Test]
83  {
84  $cache = $this->createMock(FrontendInterface::class);
85  $backend = new ‪TransientMemoryBackend('Testing');
86  $backend->setCache($cache);
87  $data = 'Some data';
88  ‪$identifier = 'MyIdentifier';
89  $backend->set(‪$identifier, $data);
90  $otherData = 'some other data';
91  $backend->set(‪$identifier, $otherData);
92  $fetchedData = $backend->get(‪$identifier);
93  self::assertEquals($otherData, $fetchedData);
94  }
95 
96  #[Test]
98  {
99  $cache = $this->createMock(FrontendInterface::class);
100  $backend = new ‪TransientMemoryBackend('Testing');
101  $backend->setCache($cache);
102  $data = 'Some data';
103  $entryIdentifier = 'MyIdentifier';
104  $backend->set($entryIdentifier, $data, ['UnitTestTag%tag1', 'UnitTestTag%tag2']);
105  $retrieved = $backend->findIdentifiersByTag('UnitTestTag%tag1');
106  self::assertEquals($entryIdentifier, $retrieved[0]);
107  $retrieved = $backend->findIdentifiersByTag('UnitTestTag%tag2');
108  self::assertEquals($entryIdentifier, $retrieved[0]);
109  }
110 
111  #[Test]
113  {
114  $cache = $this->createMock(FrontendInterface::class);
115  $backend = new ‪TransientMemoryBackend('Testing');
116  $backend->setCache($cache);
117  ‪$identifier = 'NonExistingIdentifier';
118  $inCache = $backend->has(‪$identifier);
119  self::assertFalse($inCache);
120  }
121 
122  #[Test]
124  {
125  $cache = $this->createMock(FrontendInterface::class);
126  $backend = new ‪TransientMemoryBackend('Testing');
127  $backend->setCache($cache);
128  ‪$identifier = 'NonExistingIdentifier';
129  $inCache = $backend->remove(‪$identifier);
130  self::assertFalse($inCache);
131  }
132 
133  #[Test]
135  {
136  $cache = $this->createMock(FrontendInterface::class);
137  $backend = new ‪TransientMemoryBackend('Testing');
138  $backend->setCache($cache);
139  $data = 'some data' . microtime();
140  $backend->set('TransientMemoryBackendTest1', $data, ['UnitTestTag%test', 'UnitTestTag%boring']);
141  $backend->set('TransientMemoryBackendTest2', $data, ['UnitTestTag%test', 'UnitTestTag%special']);
142  $backend->set('TransientMemoryBackendTest3', $data, ['UnitTestTag%test']);
143  $backend->flushByTag('UnitTestTag%special');
144  self::assertTrue($backend->has('TransientMemoryBackendTest1'), 'TransientMemoryBackendTest1');
145  self::assertFalse($backend->has('TransientMemoryBackendTest2'), 'TransientMemoryBackendTest2');
146  self::assertTrue($backend->has('TransientMemoryBackendTest3'), 'TransientMemoryBackendTest3');
147  }
148 
149  #[Test]
151  {
152  $cache = $this->createMock(FrontendInterface::class);
153  $backend = new ‪TransientMemoryBackend('Testing');
154  $backend->setCache($cache);
155  $data = 'some data' . microtime();
156  $backend->set('TransientMemoryBackendTest1', $data, ['UnitTestTag%test', 'UnitTestTag%boring']);
157  $backend->set('TransientMemoryBackendTest2', $data, ['UnitTestTag%test', 'UnitTestTag%special']);
158  $backend->set('TransientMemoryBackendTest3', $data, ['UnitTestTag%test']);
159  $backend->flushByTags(['UnitTestTag%special', 'UnitTestTag%boring']);
160  self::assertFalse($backend->has('TransientMemoryBackendTest1'), 'TransientMemoryBackendTest1');
161  self::assertFalse($backend->has('TransientMemoryBackendTest2'), 'TransientMemoryBackendTest2');
162  self::assertTrue($backend->has('TransientMemoryBackendTest3'), 'TransientMemoryBackendTest3');
163  }
164 
165  #[Test]
166  public function ‪flushRemovesAllCacheEntries(): void
167  {
168  $cache = $this->createMock(FrontendInterface::class);
169  $backend = new ‪TransientMemoryBackend('Testing');
170  $backend->setCache($cache);
171  $data = 'some data' . microtime();
172  $backend->set('TransientMemoryBackendTest1', $data);
173  $backend->set('TransientMemoryBackendTest2', $data);
174  $backend->set('TransientMemoryBackendTest3', $data);
175  $backend->flush();
176  self::assertFalse($backend->has('TransientMemoryBackendTest1'), 'TransientMemoryBackendTest1');
177  self::assertFalse($backend->has('TransientMemoryBackendTest2'), 'TransientMemoryBackendTest2');
178  self::assertFalse($backend->has('TransientMemoryBackendTest3'), 'TransientMemoryBackendTest3');
179  }
180 }
‪TYPO3\CMS\Core\Cache\Backend\TransientMemoryBackend
Definition: TransientMemoryBackend.php:25
‪TYPO3\CMS\Core\Tests\Unit\Cache\Backend
Definition: AbstractBackendTest.php:18
‪TYPO3\CMS\Core\Tests\Unit\Cache\Backend\TransientMemoryBackendTest\flushByTagRemovesCacheEntriesWithSpecifiedTag
‪flushByTagRemovesCacheEntriesWithSpecifiedTag()
Definition: TransientMemoryBackendTest.php:134
‪TYPO3\CMS\Core\Tests\Unit\Cache\Backend\TransientMemoryBackendTest\itIsPossibleToOverwriteAnEntryInTheCache
‪itIsPossibleToOverwriteAnEntryInTheCache()
Definition: TransientMemoryBackendTest.php:82
‪TYPO3\CMS\Core\Tests\Unit\Cache\Backend\TransientMemoryBackendTest\flushRemovesAllCacheEntries
‪flushRemovesAllCacheEntries()
Definition: TransientMemoryBackendTest.php:166
‪TYPO3\CMS\Core\Tests\Unit\Cache\Backend\TransientMemoryBackendTest\findIdentifiersByTagFindsCacheEntriesWithSpecifiedTag
‪findIdentifiersByTagFindsCacheEntriesWithSpecifiedTag()
Definition: TransientMemoryBackendTest.php:97
‪TYPO3\CMS\Core\Tests\Unit\Cache\Backend\TransientMemoryBackendTest\hasReturnsFalseIfTheEntryDoesntExist
‪hasReturnsFalseIfTheEntryDoesntExist()
Definition: TransientMemoryBackendTest.php:112
‪TYPO3\CMS\Core\Tests\Unit\Cache\Backend\TransientMemoryBackendTest\itIsPossibleToSetAndGetEntry
‪itIsPossibleToSetAndGetEntry()
Definition: TransientMemoryBackendTest.php:55
‪TYPO3\CMS\Core\Tests\Unit\Cache\Backend\TransientMemoryBackendTest\itIsPossibleToRemoveEntryFromCache
‪itIsPossibleToRemoveEntryFromCache()
Definition: TransientMemoryBackendTest.php:68
‪TYPO3\CMS\Core\Cache\Exception
Definition: DuplicateIdentifierException.php:16
‪TYPO3\CMS\Core\Tests\Unit\Cache\Backend\TransientMemoryBackendTest\setThrowsExceptionIfNoFrontEndHasBeenSet
‪setThrowsExceptionIfNoFrontEndHasBeenSet()
Definition: TransientMemoryBackendTest.php:31
‪TYPO3\CMS\Core\Cache\Frontend\FrontendInterface
Definition: FrontendInterface.php:22
‪TYPO3\CMS\Core\Tests\Unit\Cache\Backend\TransientMemoryBackendTest\flushByTagsRemovesCacheEntriesWithSpecifiedTags
‪flushByTagsRemovesCacheEntriesWithSpecifiedTags()
Definition: TransientMemoryBackendTest.php:150
‪TYPO3\CMS\Core\Tests\Unit\Cache\Backend\TransientMemoryBackendTest
Definition: TransientMemoryBackendTest.php:27
‪TYPO3\CMS\Core\Tests\Unit\Cache\Backend\TransientMemoryBackendTest\itIsPossibleToSetAndCheckExistenceInCache
‪itIsPossibleToSetAndCheckExistenceInCache()
Definition: TransientMemoryBackendTest.php:42
‪TYPO3\CMS\Core\Tests\Unit\Cache\Backend\TransientMemoryBackendTest\$resetSingletonInstances
‪bool $resetSingletonInstances
Definition: TransientMemoryBackendTest.php:28
‪TYPO3\CMS\Webhooks\Message\$identifier
‪identifier readonly string $identifier
Definition: FileAddedMessage.php:37
‪TYPO3\CMS\Core\Tests\Unit\Cache\Backend\TransientMemoryBackendTest\removeReturnsFalseIfTheEntryDoesntExist
‪removeReturnsFalseIfTheEntryDoesntExist()
Definition: TransientMemoryBackendTest.php:123