Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
StatusTest.php
Go to the documentation of this file.
1 <?php
8 
9 use \Magento\Framework\Module\Status;
11 
12 class StatusTest extends \PHPUnit\Framework\TestCase
13 {
17  private $loader;
18 
22  private $moduleList;
23 
27  private $writer;
28 
32  private $conflictChecker;
33 
37  private $dependencyChecker;
38 
42  private $object;
43 
44  protected function setUp()
45  {
46  $this->loader = $this->createMock(\Magento\Framework\Module\ModuleList\Loader::class);
47  $this->moduleList = $this->createMock(\Magento\Framework\Module\ModuleList::class);
48  $this->writer = $this->createMock(\Magento\Framework\App\DeploymentConfig\Writer::class);
49  $this->conflictChecker = $this->createMock(\Magento\Framework\Module\ConflictChecker::class);
50  $this->dependencyChecker = $this->createMock(\Magento\Framework\Module\DependencyChecker::class);
51  $this->object = new Status(
52  $this->loader,
53  $this->moduleList,
54  $this->writer,
55  $this->conflictChecker,
56  $this->dependencyChecker
57  );
58  }
59 
61  {
62  $this->conflictChecker->expects($this->once())
63  ->method('checkConflictsWhenEnableModules')
64  ->will($this->returnValue(['Module_Foo' => [], 'Module_Bar' => []]));
65  $this->dependencyChecker->expects($this->once())
66  ->method('checkDependenciesWhenEnableModules')
67  ->will($this->returnValue(['Module_Foo' => [], 'Module_Bar' => []]));
68  $result = $this->object->checkConstraints(
69  true,
70  ['Module_Foo' => '', 'Module_Bar' => ''],
71  ['Module_baz', 'Module_quz']
72  );
73  $this->assertEquals([], $result);
74  }
75 
77  {
78  $this->conflictChecker->expects($this->once())
79  ->method('checkConflictsWhenEnableModules')
80  ->will($this->returnValue(['Module_Foo' => ['Module_Bar'], 'Module_Bar' => ['Module_Foo']]));
81  $this->dependencyChecker->expects($this->once())
82  ->method('checkDependenciesWhenEnableModules')
83  ->will($this->returnValue(
84  [
85  'Module_Foo' => ['Module_Baz' => ['Module_Foo', 'Module_Baz']],
86  'Module_Bar' => ['Module_Baz' => ['Module_Bar', 'Module_Baz']],
87  ]
88  ));
89  $result = $this->object->checkConstraints(true, ['Module_Foo' => '', 'Module_Bar' => ''], [], false);
90  $expect = [
91  'Cannot enable Module_Foo because it depends on disabled modules:',
92  "Module_Baz: Module_Foo->Module_Baz",
93  'Cannot enable Module_Bar because it depends on disabled modules:',
94  "Module_Baz: Module_Bar->Module_Baz",
95  'Cannot enable Module_Foo because it conflicts with other modules:',
96  "Module_Bar",
97  'Cannot enable Module_Bar because it conflicts with other modules:',
98  "Module_Foo",
99  ];
100  $this->assertEquals($expect, $result);
101  }
102 
104  {
105  $this->conflictChecker->expects($this->once())
106  ->method('checkConflictsWhenEnableModules')
107  ->will($this->returnValue(['Module_Foo' => ['Module_Bar'], 'Module_Bar' => ['Module_Foo']]));
108  $this->dependencyChecker->expects($this->once())
109  ->method('checkDependenciesWhenEnableModules')
110  ->will($this->returnValue(
111  [
112  'Module_Foo' => ['Module_Baz' => ['Module_Foo', 'Module_Baz']],
113  'Module_Bar' => ['Module_Baz' => ['Module_Bar', 'Module_Baz']],
114  ]
115  ));
116  $result = $this->object->checkConstraints(true, ['Module_Foo' => '', 'Module_Bar' => ''], [], true);
117  $expect = [
118  'Cannot enable Module_Foo',
119  'Cannot enable Module_Bar',
120  'Cannot enable Module_Foo because it conflicts with other modules:',
121  "Module_Bar",
122  'Cannot enable Module_Bar because it conflicts with other modules:',
123  "Module_Foo",
124  ];
125  $this->assertEquals($expect, $result);
126  }
127 
129  {
130  $this->dependencyChecker->expects($this->once())
131  ->method('checkDependenciesWhenDisableModules')
132  ->will($this->returnValue(['Module_Foo' => [], 'Module_Bar' => []]));
133  $result = $this->object->checkConstraints(false, ['Module_Foo' => '', 'Module_Bar' => '']);
134  $this->assertEquals([], $result);
135  }
136 
138  {
139  $this->dependencyChecker->expects($this->once())
140  ->method('checkDependenciesWhenDisableModules')
141  ->will($this->returnValue(
142  [
143  'Module_Foo' => ['Module_Baz' => ['Module_Baz', 'Module_Foo']],
144  'Module_Bar' => ['Module_Baz' => ['Module_Baz', 'Module_Bar']],
145  ]
146  ));
147  $result = $this->object->checkConstraints(false, ['Module_Foo' => '', 'Module_Bar' => '']);
148  $expect = [
149  'Cannot disable Module_Foo because modules depend on it:',
150  "Module_Baz: Module_Baz->Module_Foo",
151  'Cannot disable Module_Bar because modules depend on it:',
152  "Module_Baz: Module_Baz->Module_Bar",
153  ];
154  $this->assertEquals($expect, $result);
155  }
156 
157  public function testSetIsEnabled()
158  {
159  $modules = ['Module_Foo' => '', 'Module_Bar' => '', 'Module_Baz' => ''];
160  $this->loader->expects($this->once())->method('load')->willReturn($modules);
161  $this->moduleList->expects($this->at(0))->method('has')->with('Module_Foo')->willReturn(false);
162  $this->moduleList->expects($this->at(1))->method('has')->with('Module_Bar')->willReturn(false);
163  $this->moduleList->expects($this->at(2))->method('has')->with('Module_Baz')->willReturn(false);
164  $expectedModules = ['Module_Foo' => 1, 'Module_Bar' => 1, 'Module_Baz' => 0];
165  $this->writer->expects($this->once())->method('saveConfig')
166  ->with([ConfigFilePool::APP_CONFIG => ['modules' => $expectedModules]]);
167  $this->object->setIsEnabled(true, ['Module_Foo', 'Module_Bar']);
168  }
169 
174  public function testSetIsEnabledUnknown()
175  {
176  $modules = ['Module_Foo' => '', 'Module_Bar' => ''];
177  $this->loader->expects($this->once())->method('load')->willReturn($modules);
178  $this->object->setIsEnabled(true, ['Module_Baz']);
179  }
180 
189  public function testGetModulesToChange($firstEnabled, $secondEnabled, $thirdEnabled, $isEnabled, $expected)
190  {
191  $modules = ['Module_Foo' => '', 'Module_Bar' => '', 'Module_Baz' => ''];
192  $this->loader->expects($this->once())->method('load')->willReturn($modules);
193  $this->moduleList->expects($this->at(0))->method('has')->with('Module_Foo')->willReturn($firstEnabled);
194  $this->moduleList->expects($this->at(1))->method('has')->with('Module_Bar')->willReturn($secondEnabled);
195  $this->moduleList->expects($this->at(2))->method('has')->with('Module_Baz')->willReturn($thirdEnabled);
196  $result = $this->object->getModulesToChange($isEnabled, ['Module_Foo', 'Module_Bar', 'Module_Baz']);
197  $this->assertEquals($expected, $result);
198  }
199 
204  {
205  return [
206  [true, true, true, true, []],
207  [true, true, false, true, ['Module_Baz']],
208  [true, false, true, true, ['Module_Bar']],
209  [true, false, false, true, ['Module_Bar', 'Module_Baz']],
210  [false, false, false, true, ['Module_Foo', 'Module_Bar', 'Module_Baz']],
211  [true, false, false, false, ['Module_Foo']],
212  [false, true, false, false, ['Module_Bar']],
213  [false, true, true, false, ['Module_Bar', 'Module_Baz']],
214  [true, true, true, false, ['Module_Foo', 'Module_Bar', 'Module_Baz']],
215  ];
216  }
217 }
testGetModulesToChange($firstEnabled, $secondEnabled, $thirdEnabled, $isEnabled, $expected)
Definition: StatusTest.php:189