diff --git a/lib/internal/Magento/Framework/App/ProductMetadata.php b/lib/internal/Magento/Framework/App/ProductMetadata.php index 052119713294b..55e98bb085d41 100644 --- a/lib/internal/Magento/Framework/App/ProductMetadata.php +++ b/lib/internal/Magento/Framework/App/ProductMetadata.php @@ -13,9 +13,7 @@ use Magento\Framework\Composer\ComposerInformation; /** - * Class ProductMetadata - * - * @package Magento\Framework\App + * Magento application product metadata */ class ProductMetadata implements ProductMetadataInterface { @@ -85,8 +83,8 @@ public function getVersion() } else { $this->version = 'UNKNOWN'; } - $this->cache->save($this->version, self::VERSION_CACHE_KEY, [Config::CACHE_TAG]); } + $this->cache->save($this->version, self::VERSION_CACHE_KEY, [Config::CACHE_TAG]); } return $this->version; } diff --git a/lib/internal/Magento/Framework/App/Test/Unit/ProductMetadataTest.php b/lib/internal/Magento/Framework/App/Test/Unit/ProductMetadataTest.php index 8e1acc89437e2..c504c5f480669 100644 --- a/lib/internal/Magento/Framework/App/Test/Unit/ProductMetadataTest.php +++ b/lib/internal/Magento/Framework/App/Test/Unit/ProductMetadataTest.php @@ -5,6 +5,7 @@ */ namespace Magento\Framework\App\Test\Unit; +use Magento\Framework\App\CacheInterface; use Magento\Framework\App\ProductMetadata; use Magento\Framework\TestFramework\Unit\Helper\ObjectManager; @@ -20,13 +21,20 @@ class ProductMetadataTest extends \PHPUnit\Framework\TestCase */ private $composerInformationMock; + /** + * @var CacheInterface|\PHPUnit_Framework_MockObject_MockObject + */ + private $cacheMock; + protected function setUp() { $this->composerInformationMock = $this->getMockBuilder(\Magento\Framework\Composer\ComposerInformation::class) ->disableOriginalConstructor()->getMock(); + $this->cacheMock = $this->getMockBuilder(CacheInterface::class)->getMock(); + $objectManager = new ObjectManager($this); - $this->productMetadata = $objectManager->getObject(ProductMetadata::class); + $this->productMetadata = $objectManager->getObject(ProductMetadata::class, ['cache' => $this->cacheMock]); $reflectionProperty = new \ReflectionProperty($this->productMetadata, 'composerInformation'); $reflectionProperty->setAccessible(true); $reflectionProperty->setValue($this->productMetadata, $this->composerInformationMock); @@ -40,11 +48,22 @@ protected function setUp() public function testGetVersion($packageList, $expectedVersion) { $this->composerInformationMock->expects($this->any())->method('getSystemPackages')->willReturn($packageList); + $this->cacheMock->expects($this->once())->method('save')->with($expectedVersion); $productVersion = $this->productMetadata->getVersion(); $this->assertNotEmpty($productVersion, 'Empty product version'); $this->assertEquals($expectedVersion, $productVersion); } + public function testGetVersionCached() + { + $expectedVersion = '1.2.3'; + $this->composerInformationMock->expects($this->never())->method('getSystemPackages'); + $this->cacheMock->expects($this->once())->method('load')->willReturn($expectedVersion); + $this->cacheMock->expects($this->never())->method('save'); + $productVersion = $this->productMetadata->getVersion(); + $this->assertEquals($expectedVersion, $productVersion); + } + /** * @return array */