diff --git a/bundle/Cache/PersistenceCachePurger.php b/bundle/Cache/PersistenceCachePurger.php index 330846e9..f7cd68be 100644 --- a/bundle/Cache/PersistenceCachePurger.php +++ b/bundle/Cache/PersistenceCachePurger.php @@ -167,8 +167,9 @@ public function contentVersion($contentId, $versionNo) return; } + // todo Once we can require 2.2.2+, simplify to just invalidate "content-{$contentId}-version-{$versionNo}" $this->cache->deleteItem("ez-content-version-info-${contentId}-${versionNo}"); - $this->cache->invalidateTags(["content-${contentId}-version-list"]); + $this->cache->invalidateTags(["content-${contentId}-version-list", "content-{$contentId}-version-{$versionNo}"]); } /** diff --git a/bundle/Tests/Cache/PersistenceCachePurgerTest.php b/bundle/Tests/Cache/PersistenceCachePurgerTest.php index f8a93953..009aeeb2 100644 --- a/bundle/Tests/Cache/PersistenceCachePurgerTest.php +++ b/bundle/Tests/Cache/PersistenceCachePurgerTest.php @@ -389,4 +389,30 @@ public function testClearUserFail() { $this->cachePurger->user(new \stdClass()); } + + /** + * @covers \eZ\Bundle\EzPublishLegacyBundle\Cache\PersistenceCachePurger::contentVersion + * @dataProvider getDataForTestClearVersionForOneContent + */ + public function testClearVersionOfOneContent($contentId, $versionNo) + { + $this->cacheService + ->expects($this->once()) + ->method('deleteItem') + ->with("ez-content-version-info-${contentId}-${versionNo}"); + + $this->cacheService + ->expects($this->once()) + ->method('invalidateTags') + ->with(["content-${contentId}-version-list", "content-${contentId}-version-${versionNo}"]); + + $this->cachePurger->contentVersion($contentId, $versionNo); + } + + public function getDataForTestClearVersionForOneContent() + { + return [ + [18, 37], + ]; + } }