138 lines
5.1 KiB
PHP
Executable File
138 lines
5.1 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
namespace Magento\Framework\Interception;
|
|
|
|
use Magento\Framework\App\Filesystem\DirectoryList;
|
|
|
|
/**
|
|
* Class GeneralTest
|
|
*
|
|
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
|
|
*/
|
|
abstract class AbstractPlugin extends \PHPUnit\Framework\TestCase
|
|
{
|
|
/**
|
|
* Config reader
|
|
*
|
|
* @var \PHPUnit\Framework\MockObject\MockObject
|
|
*/
|
|
protected $_configReader;
|
|
|
|
/**
|
|
* Object Manager
|
|
*
|
|
* @var \Magento\Framework\ObjectManagerInterface
|
|
*/
|
|
protected $_objectManager;
|
|
|
|
/**
|
|
* Applicartion Object Manager
|
|
*
|
|
* @var \Magento\Framework\ObjectManagerInterface
|
|
*/
|
|
private $applicationObjectManager;
|
|
|
|
/**
|
|
* Set up
|
|
*/
|
|
protected function setUp(): void
|
|
{
|
|
if (!$this->_objectManager) {
|
|
return;
|
|
}
|
|
|
|
$this->applicationObjectManager = \Magento\Framework\App\ObjectManager::getInstance();
|
|
\Magento\Framework\App\ObjectManager::setInstance($this->_objectManager);
|
|
}
|
|
|
|
/**
|
|
* Tear down
|
|
*/
|
|
protected function tearDown(): void
|
|
{
|
|
\Magento\Framework\App\ObjectManager::setInstance($this->applicationObjectManager);
|
|
}
|
|
|
|
/**
|
|
* Set up Interception Config
|
|
*
|
|
* @param array $pluginConfig
|
|
*/
|
|
public function setUpInterceptionConfig($pluginConfig)
|
|
{
|
|
$config = new \Magento\Framework\Interception\ObjectManager\Config\Developer();
|
|
$factory = new \Magento\Framework\ObjectManager\Factory\Dynamic\Developer($config, null);
|
|
|
|
$this->_configReader = $this->createMock(\Magento\Framework\Config\ReaderInterface::class);
|
|
$this->_configReader->expects(
|
|
$this->any()
|
|
)->method(
|
|
'read'
|
|
)->willReturn(
|
|
$pluginConfig
|
|
);
|
|
|
|
$areaList = $this->createMock(\Magento\Framework\App\AreaList::class);
|
|
$areaList->expects($this->any())->method('getCodes')->willReturn([]);
|
|
$configScope = new \Magento\Framework\Config\Scope($areaList, 'global');
|
|
$cache = $this->createMock(\Magento\Framework\Config\CacheInterface::class);
|
|
$cacheManager = $this->createMock(\Magento\Framework\Interception\Config\CacheManager::class);
|
|
$cacheManager->method('load')->willReturn(null);
|
|
$definitions = new \Magento\Framework\ObjectManager\Definition\Runtime();
|
|
$relations = new \Magento\Framework\ObjectManager\Relations\Runtime();
|
|
$configLoader = $this->createMock(ConfigLoaderInterface::class);
|
|
$logger = $this->createMock(\Psr\Log\LoggerInterface::class);
|
|
$directoryList = $this->createMock(DirectoryList::class);
|
|
$configWriter = $this->createMock(PluginListGenerator::class);
|
|
$interceptionConfig = new Config\Config(
|
|
$this->_configReader,
|
|
$configScope,
|
|
$cache,
|
|
$relations,
|
|
$config,
|
|
$definitions,
|
|
'interception',
|
|
null,
|
|
$cacheManager
|
|
);
|
|
$interceptionDefinitions = new Definition\Runtime();
|
|
$json = new \Magento\Framework\Serialize\Serializer\Json();
|
|
$sharedInstances = [
|
|
\Magento\Framework\Config\CacheInterface::class => $cache,
|
|
\Magento\Framework\Config\ScopeInterface::class => $configScope,
|
|
\Magento\Framework\Config\ReaderInterface::class => $this->_configReader,
|
|
\Magento\Framework\ObjectManager\RelationsInterface::class => $relations,
|
|
\Magento\Framework\ObjectManager\ConfigInterface::class => $config,
|
|
\Magento\Framework\Interception\ObjectManager\ConfigInterface::class => $config,
|
|
\Magento\Framework\ObjectManager\DefinitionInterface::class => $definitions,
|
|
\Magento\Framework\Interception\DefinitionInterface::class => $interceptionDefinitions,
|
|
\Magento\Framework\Serialize\SerializerInterface::class => $json,
|
|
\Magento\Framework\Interception\ConfigLoaderInterface::class => $configLoader,
|
|
\Psr\Log\LoggerInterface::class => $logger,
|
|
\Magento\Framework\App\Filesystem\DirectoryList::class => $directoryList,
|
|
\Magento\Framework\App\ObjectManager\ConfigWriterInterface::class => $configWriter
|
|
];
|
|
$this->_objectManager = new \Magento\Framework\ObjectManager\ObjectManager(
|
|
$factory,
|
|
$config,
|
|
$sharedInstances
|
|
);
|
|
$factory->setObjectManager($this->_objectManager);
|
|
|
|
$config->setInterceptionConfig($interceptionConfig);
|
|
$config->extend(
|
|
[
|
|
'preferences' => [
|
|
\Magento\Framework\Interception\PluginListInterface::class =>
|
|
\Magento\Framework\Interception\PluginList\PluginList::class,
|
|
\Magento\Framework\Interception\ConfigWriterInterface::class =>
|
|
\Magento\Framework\Interception\PluginListGenerator::class
|
|
],
|
|
]
|
|
);
|
|
}
|
|
}
|