![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/framework/App/Test/Unit/Cache/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Framework\App\Test\Unit\Cache; use Magento\Framework\App\Cache\Manager; use Magento\Framework\App\Cache\StateInterface; use Magento\Framework\App\Cache\Type\FrontendPool; use Magento\Framework\App\Cache\TypeListInterface; use Magento\Framework\App\Console\Response; use Magento\Framework\Cache\FrontendInterface; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; class ManagerTest extends TestCase { /** * @var MockObject|TypeListInterface */ private $cacheTypeList; /** * @var MockObject|StateInterface */ private $cacheState; /** * @var MockObject|Response */ private $response; /** * @var MockObject|FrontendPool */ private $frontendPool; /** * @var Manager */ private $model; protected function setUp(): void { $this->cacheTypeList = $this->getMockForAbstractClass(TypeListInterface::class); $this->cacheState = $this->getMockForAbstractClass(StateInterface::class); $this->response = $this->createMock(Response::class); $this->frontendPool = $this->createMock(FrontendPool::class); $this->model = new Manager($this->cacheTypeList, $this->cacheState, $this->frontendPool); } public function testEmptyRequest() { $this->cacheState->expects($this->never())->method('setEnabled'); $this->cacheState->expects($this->never())->method('persist'); $this->frontendPool->expects($this->never())->method('get'); $this->model->setEnabled([], true); } /** * Test setting all cache types to true * * In this fixture, there are 2 of 3 cache types disabled, but will be enabled * so persist() should be invoked once, then clean() for each of those which changed */ public function testSetEnabledTrueAll() { $caches = ['foo', 'bar', 'baz']; $cacheStatusMap = [['foo', true], ['bar', false], ['baz', false]]; $this->cacheState->expects($this->exactly(3)) ->method('isEnabled') ->willReturnMap($cacheStatusMap); $this->cacheState->expects($this->exactly(2)) ->method('setEnabled') ->willReturnMap([['bar', true], ['baz', true]]); $this->cacheState->expects($this->once())->method('persist'); $this->assertEquals(['bar', 'baz'], $this->model->setEnabled($caches, true)); } /** * Test setting all cache types to true * * Fixture is the same as in previous test, but here the intent to disable all of them. * Since only one of them is enabled, the setter should be invoked only once. * Also the operation of deactivating cache does not need cleanup (it is relevant when you enable it). */ public function testSetEnabledFalseAll() { $caches = ['foo', 'bar', 'baz']; $cacheStatusMap = [['foo', true], ['bar', false], ['baz', false]]; $this->cacheState->expects($this->exactly(3)) ->method('isEnabled') ->willReturnMap($cacheStatusMap); $this->cacheState->expects($this->once())->method('setEnabled')->with('foo', false); $this->cacheState->expects($this->once())->method('persist'); $this->frontendPool->expects($this->never())->method('get'); $this->assertEquals(['foo'], $this->model->setEnabled($caches, false)); } /** * Test flushing all cache types * * Emulates situation when some cache frontends reuse the same backend * Asserts that the flush is invoked only once per affected storage */ public function testFlushAll() { $cacheTypes = ['foo', 'bar', 'baz']; $frontendFoo = $this->getMockForAbstractClass(FrontendInterface::class); $frontendBar = $this->getMockForAbstractClass(FrontendInterface::class); $frontendBaz = $this->getMockForAbstractClass(FrontendInterface::class); $this->frontendPool->expects($this->exactly(3))->method('get')->willReturnMap([ ['foo', $frontendFoo], ['bar', $frontendBar], ['baz', $frontendBaz], ]); $backendOne = $this->getMockForAbstractClass(\Zend_Cache_Backend_Interface::class); $backendTwo = $this->getMockForAbstractClass(\Zend_Cache_Backend_Interface::class); $frontendFoo->expects($this->once())->method('getBackend')->willReturn($backendOne); $frontendBar->expects($this->once())->method('getBackend')->willReturn($backendOne); $frontendBaz->expects($this->once())->method('getBackend')->willReturn($backendTwo); $backendOne->expects($this->once())->method('clean'); $backendTwo->expects($this->once())->method('clean'); $this->model->flush($cacheTypes); } public function testGetStatus() { $types = [ ['id' => 'foo', 'status' => true], ['id' => 'bar', 'status' => false], ]; $this->cacheTypeList->expects($this->once())->method('getTypes')->willReturn($types); $this->assertSame(['foo' => true, 'bar' => false], $this->model->getStatus()); } public function testGetAvailableTypes() { $types = [ ['id' => 'foo', 'status' => true], ['id' => 'bar', 'status' => false], ]; $this->cacheTypeList->expects($this->once())->method('getTypes')->willReturn($types); $this->assertSame(['foo', 'bar'], $this->model->getAvailableTypes()); } }