Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
InterceptionConfigurationBuilderTest.php
Go to the documentation of this file.
1 <?php
7 
9 
10 class InterceptionConfigurationBuilderTest extends \PHPUnit\Framework\TestCase
11 {
15  protected $model;
16 
21 
25  protected $pluginList;
26 
30  protected $typeReader;
31 
35  private $cacheManager;
36 
40  private $interceptableValidator;
41 
42  protected function setUp()
43  {
44  $this->interceptionConfig =
45  $this->createPartialMock(\Magento\Framework\Interception\Config\Config::class, ['hasPlugins']);
46  $this->pluginList = $this->createPartialMock(
47  \Magento\Setup\Module\Di\Code\Generator\PluginList::class,
48  ['setInterceptedClasses', 'setScopePriorityScheme', 'getPluginsConfig']
49  );
50  $this->cacheManager = $this->createMock(\Magento\Framework\App\Cache\Manager::class);
51  $this->interceptableValidator =
52  $this->createMock(\Magento\Framework\ObjectManager\InterceptableValidator::class);
53 
54  $this->typeReader = $this->createPartialMock(\Magento\Setup\Module\Di\Code\Reader\Type::class, ['isConcrete']);
55  $this->model = new \Magento\Setup\Module\Di\Code\Generator\InterceptionConfigurationBuilder(
56  $this->interceptionConfig,
57  $this->pluginList,
58  $this->typeReader,
59  $this->cacheManager,
60  $this->interceptableValidator
61  );
62  }
63 
67  public function testGetInterceptionConfiguration($plugins)
68  {
69  $definedClasses = ['Class1'];
70  $this->interceptionConfig->expects($this->once())
71  ->method('hasPlugins')
72  ->with('Class1')
73  ->willReturn(true);
74  $this->typeReader->expects($this->any())
75  ->method('isConcrete')
76  ->willReturnMap([
77  ['Class1', true],
78  ['instance', true],
79  ]);
80  $this->interceptableValidator->expects($this->any())
81  ->method('validate')
82  ->with('Class1')
83  ->willReturn(true);
84 
85  $this->cacheManager->expects($this->once())
86  ->method('setEnabled')
87  ->with([CompiledConfig::TYPE_IDENTIFIER], true);
88  $this->pluginList->expects($this->once())
89  ->method('setInterceptedClasses')
90  ->with($definedClasses);
91  $this->pluginList->expects($this->once())
92  ->method('setScopePriorityScheme')
93  ->with(['global', 'areaCode']);
94  $this->pluginList->expects($this->once())
95  ->method('getPluginsConfig')
96  ->willReturn(['instance' => $plugins]);
97 
98  $this->model->addAreaCode('areaCode');
99  $this->model->getInterceptionConfiguration($definedClasses);
100  }
101 
106  {
107  return [
108  [null],
109  [['plugin' => ['instance' => 'someinstance']]],
110  [['plugin' => ['instance' => 'someinstance'], 'plugin2' => ['instance' => 'someinstance']]]
111  ];
112  }
113 }