From f8a8eb1d35b012d0d85da2b67805c68fe9e62d9d Mon Sep 17 00:00:00 2001 From: Alexander Schranz Date: Wed, 15 Apr 2020 14:44:16 +0200 Subject: [PATCH] Add reproducer to for hit after update expire cacheItem --- .../Cache/Tests/Traits/TagAwareTestTrait.php | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/Symfony/Component/Cache/Tests/Traits/TagAwareTestTrait.php b/src/Symfony/Component/Cache/Tests/Traits/TagAwareTestTrait.php index 7f1544af5b41d..914326a28dbf5 100644 --- a/src/Symfony/Component/Cache/Tests/Traits/TagAwareTestTrait.php +++ b/src/Symfony/Component/Cache/Tests/Traits/TagAwareTestTrait.php @@ -155,4 +155,42 @@ public function testGetMetadata() $i = $pool->getItem('k'); $this->assertSame(['foo' => 'foo'], $i->getMetadata()[CacheItem::METADATA_TAGS]); } + + public function testRefreshAfterExpires() + { + $pool = $this->createCachePool(); + $pool->clear(); + + $cacheItem = $pool->getItem('test'); + + $this->assertFalse($cacheItem->isHit()); + + // write cache with expires + $cacheItem->set('test'); + $cacheItem->tag('1234'); + $cacheItem->expiresAfter(5); + + $pool->save($cacheItem); + + $cacheItem = $pool->getItem('test'); + $this->assertTrue($cacheItem->isHit()); + + // wait until expired + sleep(5); + + // item should not longer be a hit + $cacheItem = $pool->getItem('test'); + $this->assertFalse($cacheItem->isHit()); + + // update expired item + $cacheItem->set('test'); + $cacheItem->tag('1234'); + $cacheItem->expiresAfter(5); + + $pool->save($cacheItem); + + // item should be again a hit + $cacheItem = $pool->getItem('test'); + $this->assertTrue($cacheItem->isHit()); + } }