Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
DependencyCheckerTest.php
Go to the documentation of this file.
1 <?php
7 
8 use \Magento\Framework\Module\DependencyChecker;
9 
10 class DependencyCheckerTest extends \PHPUnit\Framework\TestCase
11 {
15  private $checker;
16 
20  private $packageInfoMock;
21 
25  private $packageInfoFactoryMock;
26 
30  private $listMock;
31 
35  private $loaderMock;
36 
37  protected function setUp()
38  {
39  $this->packageInfoMock = $this->createMock(\Magento\Framework\Module\PackageInfo::class);
40  $requireMap = [
41  ['A', ['B']],
42  ['B', ['D', 'E']],
43  ['C', ['E']],
44  ['D', ['A']],
45  ['E', []],
46  ];
47  $this->packageInfoMock
48  ->expects($this->any())
49  ->method('getRequire')
50  ->will($this->returnValueMap($requireMap));
51 
52  $this->packageInfoFactoryMock = $this->createMock(\Magento\Framework\Module\PackageInfoFactory::class);
53  $this->packageInfoFactoryMock->expects($this->once())
54  ->method('create')
55  ->will($this->returnValue($this->packageInfoMock));
56 
57  $this->listMock = $this->createMock(\Magento\Framework\Module\ModuleList::class);
58  $this->loaderMock = $this->createMock(\Magento\Framework\Module\ModuleList\Loader::class);
59  $this->loaderMock
60  ->expects($this->any())
61  ->method('load')
62  ->will($this->returnValue(['A' => [], 'B' => [], 'C' => [], 'D' => [], 'E' => []]));
63  }
64 
66  {
67  $this->listMock->expects($this->any())
68  ->method('getNames')
69  ->will($this->returnValue(['A', 'B', 'C', 'D', 'E']));
70  $this->packageInfoMock->expects($this->atLeastOnce())
71  ->method('getNonExistingDependencies')
72  ->willReturn([]);
73  $this->checker = new DependencyChecker($this->listMock, $this->loaderMock, $this->packageInfoFactoryMock);
74 
75  $actual = $this->checker->checkDependenciesWhenDisableModules(['B', 'D']);
76  $expected = ['B' => ['A' => ['A', 'B']], 'D' => ['A' => ['A', 'B', 'D']]];
77  $this->assertEquals($expected, $actual);
78  }
79 
81  {
82  $this->packageInfoMock->expects($this->atLeastOnce())
83  ->method('getNonExistingDependencies')
84  ->willReturn([]);
85  $this->checker = new DependencyChecker($this->listMock, $this->loaderMock, $this->packageInfoFactoryMock);
86 
87  $actual = $this->checker->checkDependenciesWhenDisableModules(['B', 'D'], ['C', 'D', 'E']);
88  $expected = ['B' => [], 'D' => []];
89  $this->assertEquals($expected, $actual);
90  }
91 
93  {
94  $this->listMock->expects($this->any())
95  ->method('getNames')
96  ->will($this->returnValue(['C']));
97  $this->packageInfoMock->expects($this->atLeastOnce())
98  ->method('getNonExistingDependencies')
99  ->willReturn([]);
100  $this->checker = new DependencyChecker($this->listMock, $this->loaderMock, $this->packageInfoFactoryMock);
101  $actual = $this->checker->checkDependenciesWhenEnableModules(['B', 'D']);
102  $expected = [
103  'B' => ['A' => ['B', 'D', 'A'], 'E' => ['B', 'E']],
104  'D' => ['A' => ['D', 'A'], 'E' => ['D', 'A', 'B', 'E']],
105  ];
106  $this->assertEquals($expected, $actual);
107  }
108 
110  {
111  $this->packageInfoMock->expects($this->atLeastOnce())
112  ->method('getNonExistingDependencies')
113  ->willReturn([]);
114  $this->checker = new DependencyChecker($this->listMock, $this->loaderMock, $this->packageInfoFactoryMock);
115  $actual = $this->checker->checkDependenciesWhenEnableModules(['B', 'D'], ['C']);
116  $expected = [
117  'B' => ['A' => ['B', 'D', 'A'], 'E' => ['B', 'E']],
118  'D' => ['A' => ['D', 'A'], 'E' => ['D', 'A', 'B', 'E']],
119  ];
120  $this->assertEquals($expected, $actual);
121  }
122 }