|
| 1 | +<?php |
| 2 | + |
| 3 | +/** |
| 4 | + * Test: Nette\Caching\Storages\SQLiteStorage clean with Cache::NAMESPACE |
| 5 | + * @phpExtension pdo_sqlite |
| 6 | + */ |
| 7 | + |
| 8 | +declare(strict_types=1); |
| 9 | + |
| 10 | +use Nette\Caching\Cache; |
| 11 | +use Nette\Caching\Storages\SQLiteStorage; |
| 12 | +use Tester\Assert; |
| 13 | + |
| 14 | + |
| 15 | +require __DIR__ . '/../bootstrap.php'; |
| 16 | + |
| 17 | +$storage = new SQLiteStorage(':memory:'); |
| 18 | + |
| 19 | +/* |
| 20 | + * Create SQLiteStorage cache without namespace and some with namespaces |
| 21 | + */ |
| 22 | +$cacheA = new Cache($storage); |
| 23 | +$cacheB = new Cache($storage, 'C' . Cache::NAMESPACE_SEPARATOR . 'A'); |
| 24 | +$cacheC = new Cache($storage, 'C'); |
| 25 | +$cacheD = new Cache($storage, 'D'); |
| 26 | + |
| 27 | +/* |
| 28 | + * Fill with data |
| 29 | + */ |
| 30 | +$cacheA->save('test1', 'David'); |
| 31 | +$cacheA->save('test2', 'Grudl'); |
| 32 | + |
| 33 | +$cacheB->save('test1', 'Barry'); |
| 34 | +$cacheB->save('test2', 'Allen'); |
| 35 | + |
| 36 | +$cacheC->save('test1', 'Oliver'); |
| 37 | +$cacheC->save('test2', 'Queen'); |
| 38 | + |
| 39 | +$cacheD->save('test1', 'Bruce'); |
| 40 | +$cacheD->save('test2', 'Wayne'); |
| 41 | + |
| 42 | + |
| 43 | +/* |
| 44 | + * Check if fill wass successfull |
| 45 | + */ |
| 46 | +Assert::same('David', $cacheA->load('test1')); |
| 47 | +Assert::same('Grudl', $cacheA->load('test2')); |
| 48 | + |
| 49 | +Assert::same('Barry', $cacheB->load('test1')); |
| 50 | +Assert::same('Allen', $cacheB->load('test2')); |
| 51 | + |
| 52 | +Assert::same('Oliver', $cacheC->load('test1')); |
| 53 | +Assert::same('Queen', $cacheC->load('test2')); |
| 54 | + |
| 55 | +Assert::same('Bruce', $cacheD->load('test1')); |
| 56 | +Assert::same('Wayne', $cacheD->load('test2')); |
| 57 | + |
| 58 | + |
| 59 | +/* |
| 60 | + * Clean one namespace |
| 61 | + */ |
| 62 | +$storage->clean([Cache::NAMESPACES => [$cacheB->getNamespace()]]); |
| 63 | + |
| 64 | +Assert::same('David', $cacheA->load('test1')); |
| 65 | +Assert::same('Grudl', $cacheA->load('test2')); |
| 66 | + |
| 67 | +// Only these should be null now |
| 68 | +Assert::null($cacheB->load('test1')); |
| 69 | +Assert::null($cacheB->load('test2')); |
| 70 | + |
| 71 | +Assert::same('Oliver', $cacheC->load('test1')); |
| 72 | +Assert::same('Queen', $cacheC->load('test2')); |
| 73 | + |
| 74 | +Assert::same('Bruce', $cacheD->load('test1')); |
| 75 | +Assert::same('Wayne', $cacheD->load('test2')); |
| 76 | + |
| 77 | + |
| 78 | +/* |
| 79 | + * Test cleaning multiple namespaces |
| 80 | + */ |
| 81 | +$storage->clean([Cache::NAMESPACES => [$cacheC->getNamespace(), $cacheD->getNamespace()]]); |
| 82 | + |
| 83 | +Assert::same('David', $cacheA->load('test1')); |
| 84 | +Assert::same('Grudl', $cacheA->load('test2')); |
| 85 | + |
| 86 | +// All other should be null |
| 87 | +Assert::null($cacheB->load('test1')); |
| 88 | +Assert::null($cacheB->load('test2')); |
| 89 | + |
| 90 | +Assert::null($cacheC->load('test1')); |
| 91 | +Assert::null($cacheC->load('test2')); |
| 92 | + |
| 93 | +Assert::null($cacheD->load('test1')); |
| 94 | +Assert::null($cacheD->load('test2')); |
0 commit comments