diff --git a/src/Cache.php b/src/Cache.php index 9fc7835..1b17514 100644 --- a/src/Cache.php +++ b/src/Cache.php @@ -40,6 +40,10 @@ public function get( } } + public function invalidate(string $name):void { + $this->fileAccess->invalidate($name); + } + public function getString(string $name, callable $callback):string { return (string)$this->get($name, $callback); } diff --git a/test/phpunit/CacheTest.php b/test/phpunit/CacheTest.php index eeb8435..cefcd9c 100644 --- a/test/phpunit/CacheTest.php +++ b/test/phpunit/CacheTest.php @@ -93,6 +93,23 @@ public function testGet_urlName_doesNotTraverseFilesystem():void { self::assertFileDoesNotExist(sys_get_temp_dir() . "/outside-cache"); } + public function testInvalidate_removesSingleCacheByKey():void { + $sut = $this->getSut(); + $name = "invalidate-me"; + $value = "cached-value"; + + self::assertSame($value, $sut->get($name, fn() => $value)); + + $expectedFile = sys_get_temp_dir() + . "/phpgt-filecache/" + . rawurlencode($name); + self::assertFileExists($expectedFile); + + $sut->invalidate($name); + + self::assertFileDoesNotExist($expectedFile); + } + public function testGet_generationExceptionDoesNotWriteInvalidValue():void { $fileAccess = self::createMock(FileAccess::class); $fileAccess->expects(self::once())