123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Framework\Cache\Test\Unit\Backend;
- class RemoteSynchronizedCacheTest extends \PHPUnit\Framework\TestCase
- {
- /**
- * @var \Magento\Framework\TestFramework\Unit\Helper\ObjectManager
- */
- protected $objectManager;
- protected function setUp()
- {
- $this->objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
- }
- /**
- * @param array $options
- *
- * @expectedException \Zend_Cache_Exception
- * @dataProvider initializeWithExceptionDataProvider
- */
- public function testInitializeWithException($options)
- {
- $this->objectManager->getObject(
- \Magento\Framework\Cache\Backend\RemoteSynchronizedCache::class,
- [
- 'options' => $options,
- ]
- );
- }
- /**
- * @return array
- */
- public function initializeWithExceptionDataProvider()
- {
- return [
- 'empty_backend_option' => [
- 'options' => [
- 'remote_backend' => null,
- 'local_backend' => null,
- ],
- ],
- 'empty_remote_backend_option' => [
- 'options' => [
- 'remote_backend' => \Magento\Framework\Cache\Backend\Database::class,
- 'local_backend' => null,
- ],
- ],
- 'empty_local_backend_option' => [
- 'options' => [
- 'remote_backend' => null,
- 'local_backend' => \Cm_Cache_Backend_File::class,
- ],
- ],
- ];
- }
- /**
- * @param array $options
- *
- * @dataProvider initializeWithOutExceptionDataProvider
- */
- public function testInitializeWithOutException($options)
- {
- $result = $this->objectManager->getObject(
- \Magento\Framework\Cache\Backend\RemoteSynchronizedCache::class,
- [
- 'options' => $options,
- ]
- );
- $this->assertInstanceOf(\Magento\Framework\Cache\Backend\RemoteSynchronizedCache::class, $result);
- }
- /**
- * @return array
- */
- public function initializeWithOutExceptionDataProvider()
- {
- $connectionMock = $this->getMockBuilder(\Magento\Framework\DB\Adapter\Pdo\Mysql::class)
- ->disableOriginalConstructor()
- ->getMock();
- return [
- 'not_empty_backend_option' => [
- 'options' => [
- 'remote_backend' => \Magento\Framework\Cache\Backend\Database::class,
- 'remote_backend_options' => [
- 'adapter_callback' => '',
- 'data_table' => 'data_table',
- 'data_table_callback' => 'data_table_callback',
- 'tags_table' => 'tags_table',
- 'tags_table_callback' => 'tags_table_callback',
- 'store_data' => '',
- 'adapter' => $connectionMock,
- ],
- 'local_backend' => \Cm_Cache_Backend_File::class,
- 'local_backend_options' => [
- 'cache_dir' => '/tmp',
- ],
- ],
- ],
- ];
- }
- /**
- * @param array $options
- * @param bool|string $expected
- *
- * @dataProvider loadDataProvider
- */
- public function testLoad($options, $expected)
- {
- /** @var \Magento\Framework\Cache\Backend\Database $database */
- $database = $this->objectManager->getObject(
- \Magento\Framework\Cache\Backend\RemoteSynchronizedCache::class,
- [
- 'options' => $options,
- ]
- );
- $this->assertEquals($expected, $database->load(5));
- }
- /**
- * @return array
- */
- public function loadDataProvider()
- {
- return [
- 'cacheInvalidationTime_is_less_than_that_dataModificationTime' => [
- 'options' => [
- 'remote_backend' => $this->getDatabaseMock(444),
- 'local_backend' => $this->getFileMock(555, 'loaded_value'),
- ],
- 'expected' => 'loaded_value',
- ],
- 'cacheInvalidationTime_is_greater_than_that_dataModificationTime' => [
- 'options' => [
- 'remote_backend' => $this->getDatabaseMock(444),
- 'local_backend' => $this->getFileMock(333, 'loaded_value'),
- ],
- 'expected' => false,
- ],
- 'cacheInvalidationTime_is_equal_to_the_dataModificationTime' => [
- 'options' => [
- 'remote_backend' => $this->getDatabaseMock(444),
- 'local_backend' => $this->getFileMock(444, 'loaded_value'),
- ],
- 'expected' => 'loaded_value',
- ],
- ];
- }
- /**
- * @param integer $cacheInvalidationTime
- * @return \Magento\Framework\Cache\Backend\Database|\PHPUnit_Framework_MockObject_MockObject
- */
- public function getDatabaseMock($cacheInvalidationTime)
- {
- $databaseMock = $this->getMockBuilder(\Magento\Framework\Cache\Backend\Database::class)
- ->setMethods(['load'])
- ->disableOriginalConstructor()
- ->getMock();
- $databaseMock->expects($this->once())
- ->method('load')
- ->will($this->returnValue($cacheInvalidationTime));
- return $databaseMock;
- }
- /**
- * @param integer $dataModificationTime
- * @return \Cm_Cache_Backend_File|\PHPUnit_Framework_MockObject_MockObject
- */
- public function getFileMock($dataModificationTime, $cacheResult)
- {
- $fileMock = $this->getMockBuilder(\Cm_Cache_Backend_File::class)
- ->setMethods(['test', 'load'])
- ->disableOriginalConstructor()
- ->getMock();
- $fileMock->expects($this->once())
- ->method('test')
- ->will($this->returnValue($dataModificationTime));
- $fileMock->expects($this->any())
- ->method('load')
- ->will($this->returnValue($cacheResult));
- return $fileMock;
- }
- public function testRemove()
- {
- $databaseMock = $this->getMockBuilder(\Magento\Framework\Cache\Backend\Database::class)
- ->setMethods(['save'])
- ->disableOriginalConstructor()
- ->getMock();
- $databaseMock->expects($this->once())
- ->method('save')
- ->will($this->returnValue(true));
- $fileMock = $this->getMockBuilder(\Cm_Cache_Backend_File::class)
- ->setMethods(['remove'])
- ->disableOriginalConstructor()
- ->getMock();
- $fileMock->expects($this->once())
- ->method('remove')
- ->will($this->returnValue(true));
- /** @var \Magento\Framework\Cache\Backend\Database $database */
- $database = $this->objectManager->getObject(
- \Magento\Framework\Cache\Backend\RemoteSynchronizedCache::class,
- [
- 'options' => [
- 'remote_backend' => $databaseMock,
- 'local_backend' => $fileMock,
- ]
- ]
- );
- $this->assertEquals(true, $database->remove(5));
- }
- public function testClean()
- {
- $databaseMock = $this->getMockBuilder(\Magento\Framework\Cache\Backend\Database::class)
- ->setMethods(['save'])
- ->disableOriginalConstructor()
- ->getMock();
- $databaseMock->expects($this->once())
- ->method('save')
- ->will($this->returnValue(true));
- $fileMock = $this->getMockBuilder(\Cm_Cache_Backend_File::class)
- ->setMethods(['clean'])
- ->disableOriginalConstructor()
- ->getMock();
- $fileMock->expects($this->once())
- ->method('clean')
- ->will($this->returnValue(true));
- /** @var \Magento\Framework\Cache\Backend\Database $database */
- $database = $this->objectManager->getObject(
- \Magento\Framework\Cache\Backend\RemoteSynchronizedCache::class,
- [
- 'options' => [
- 'remote_backend' => $databaseMock,
- 'local_backend' => $fileMock,
- ]
- ]
- );
- $this->assertEquals(true, $database->clean());
- }
- }
|