magento2-docker/dev/tests/integration/testsuite/Magento/Framework/Interception/AbstractPlugin.php

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
],
]
);
}
}