Skip to content

Commit ac7dd53

Browse files
author
Olga Kopylova
committed
Merge remote-tracking branch 'origin/MAGETWO-5081-manage-modules' into develop
2 parents 64dff4a + 2dc82e6 commit ac7dd53

File tree

9 files changed

+234
-100
lines changed

9 files changed

+234
-100
lines changed

dev/tests/unit/testsuite/Magento/Framework/Module/ConflictCheckerTest.php

Lines changed: 39 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ public function testCheckConflictsWhenEnableModules(
2828
$packageInfoMock->expects($this->any())
2929
->method('getConflict')
3030
->will($this->returnValueMap($conflictReturnMap));
31+
$packageInfoMock->expects($this->any())
32+
->method('getVersion')
33+
->will($this->returnValue('0.1'));
3134
$packageInfoFactoryMock = $this->getMock('Magento\Framework\Module\PackageInfoFactory', [], [], '', false);
3235
$packageInfoFactoryMock->expects($this->once())
3336
->method('create')
@@ -43,53 +46,81 @@ public function checkConflictWhenEnableModuleDataProvider()
4346
{
4447
return [
4548
[
46-
[['Vendor_A', true, ['Vendor_B']], ['Vendor_B', true, []]],
49+
[['Vendor_A', ['Vendor_B' => '0.1']], ['Vendor_B', []]],
4750
['Vendor_A'],
4851
['Vendor_B'],
4952
['Vendor_B' => ['Vendor_A']]
5053
],
5154
[
52-
[['Vendor_A', true, ['Vendor_B']], ['Vendor_B', true, []]],
55+
[['Vendor_A', ['Vendor_B' => '0.1']], ['Vendor_B', []]],
5356
[],
5457
['Vendor_B'],
5558
['Vendor_B' => []]
5659
],
5760
[
58-
[['Vendor_B', true, ['Vendor_A']], ['Vendor_A', true, []]],
61+
[['Vendor_B', ['Vendor_A' => '0.1']], ['Vendor_A', []]],
5962
['Vendor_A'],
6063
['Vendor_B'],
6164
['Vendor_B' => ['Vendor_A']]
6265
],
6366
[
64-
[['Vendor_B', true, ['Vendor_A']], ['Vendor_A', true, []]],
67+
[['Vendor_B', ['Vendor_A' => '0.1']], ['Vendor_A', []]],
6568
[],
6669
['Vendor_B'],
6770
['Vendor_B' => []]
6871
],
6972
[
70-
[['Vendor_A', true, []], ['Vendor_B', true, []]],
73+
[['Vendor_A', []], ['Vendor_B', []]],
7174
['Vendor_A'],
7275
['Vendor_B'],
7376
['Vendor_B' => []]
7477
],
7578
[
76-
[['Vendor_A', true, []], ['Vendor_B', true, []], ['Vendor_C', true, []]],
79+
[['Vendor_A', []], ['Vendor_B', []], ['Vendor_C', []]],
7780
['Vendor_A'],
7881
['Vendor_B', 'Vendor_C'],
7982
['Vendor_B' => [], 'Vendor_C' => []]
8083
],
8184
[
82-
[['Vendor_A', true, ['Vendor_C']], ['Vendor_B', true, []], ['Vendor_C', true, []]],
85+
[['Vendor_A', ['Vendor_C' => '0.1']], ['Vendor_B', []], ['Vendor_C', []]],
8386
['Vendor_A'],
8487
['Vendor_B', 'Vendor_C'],
8588
['Vendor_B' => [], 'Vendor_C' => ['Vendor_A']]
8689
],
8790
[
88-
[['Vendor_A', true, []], ['Vendor_B', true, ['Vendor_C']], ['Vendor_C', true, []]],
91+
[['Vendor_A', []], ['Vendor_B', ['Vendor_C' => '0.1']], ['Vendor_C', []]],
8992
['Vendor_A'],
9093
['Vendor_B', 'Vendor_C'],
9194
['Vendor_B' => ['Vendor_C'], 'Vendor_C' => ['Vendor_B']]
9295
],
9396
];
9497
}
98+
99+
public function testCheckConflictWhenEnableModuleDifferentVersion()
100+
{
101+
$moduleListMock = $this->getMock('Magento\Framework\Module\ModuleList', [], [], '', false);
102+
$packageInfoMock = $this->getMock('Magento\Framework\Module\PackageInfo', [], [], '', false);
103+
$moduleListMock->expects($this->any())
104+
->method('getNames')
105+
->will($this->returnValue(['Vendor_A', 'Vendor_B']));
106+
$packageInfoMock->expects($this->any())
107+
->method('getConflict')
108+
->will($this->returnValueMap([
109+
['Vendor_A', []],
110+
['Vendor_B', []],
111+
['Vendor_C', ['Vendor_A' => '0.2', 'Vendor_B' => '0.3']]
112+
]));
113+
$packageInfoMock->expects($this->any())
114+
->method('getVersion')
115+
->will($this->returnValueMap([['Vendor_A', '0.2'], ['Vendor_B', '0.4']]));
116+
$packageInfoFactoryMock = $this->getMock('Magento\Framework\Module\PackageInfoFactory', [], [], '', false);
117+
$packageInfoFactoryMock->expects($this->once())
118+
->method('create')
119+
->will($this->returnValue($packageInfoMock));
120+
$conflictChecker = new ConflictChecker($moduleListMock, $packageInfoFactoryMock);
121+
$this->assertEquals(
122+
['Vendor_C' => ['Vendor_A']],
123+
$conflictChecker->checkConflictsWhenEnableModules(['Vendor_C'])
124+
);
125+
}
95126
}

dev/tests/unit/testsuite/Magento/Framework/Module/DependencyCheckerTest.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,11 @@ public function setUp()
3636
{
3737
$this->packageInfoMock = $this->getMock('Magento\Framework\Module\PackageInfo', [], [], '', false);
3838
$requireMap = [
39-
['A', true, ['B']],
40-
['B', true, ['D', 'E']],
41-
['C', true, ['E']],
42-
['D', true, ['A']],
43-
['E', true, []],
39+
['A', ['B']],
40+
['B', ['D', 'E']],
41+
['C', ['E']],
42+
['D', ['A']],
43+
['E', []],
4444
];
4545
$this->packageInfoMock
4646
->expects($this->any())

dev/tests/unit/testsuite/Magento/Framework/Module/PackageInfoTest.php

Lines changed: 14 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,11 @@ public function setUp()
3131
->will($this->returnValue(['A' => [], 'B' => [], 'C' => [], 'D' => [], 'E' => []]));
3232

3333
$composerData = [
34-
'A' => '{"name":"a", "require":{"b":"0.1"}, "conflict":{"c":"0.1"}}',
35-
'B' => '{"name":"b", "require":{"d":"0.1"}}',
36-
'C' => '{"name":"c", "require":{"e":"0.1"}}',
37-
'D' => '{"name":"d", "conflict":{"c":"0.1"}}',
38-
'E' => '{"name":"e"}',
34+
'A' => '{"name":"a", "require":{"b":"0.1"}, "conflict":{"c":"0.1"}, "version":"0.1"}',
35+
'B' => '{"name":"b", "require":{"d":"0.3"}, "version":"0.2"}',
36+
'C' => '{"name":"c", "require":{"e":"0.1"}, "version":"0.1"}',
37+
'D' => '{"name":"d", "conflict":{"c":"0.1"}, "version":"0.3"}',
38+
'E' => '{"name":"e", "version":"0.4"}',
3939
];
4040
$fileIteratorMock = $this->getMock('Magento\Framework\Config\FileIterator', [], [], '', false);
4141
$fileIteratorMock->expects($this->once())
@@ -68,28 +68,20 @@ public function testGetRequireReturnModuleName()
6868

6969
public function testGetConflictReturnModuleName()
7070
{
71-
$this->assertEquals(['C'], $this->packageInfo->getConflict('A'));
71+
$this->assertEquals(['C' => '0.1'], $this->packageInfo->getConflict('A'));
7272
$this->assertEquals([], $this->packageInfo->getConflict('B'));
7373
$this->assertEquals([], $this->packageInfo->getConflict('C'));
74-
$this->assertEquals(['C'], $this->packageInfo->getConflict('D'));
74+
$this->assertEquals(['C' => '0.1'], $this->packageInfo->getConflict('D'));
7575
$this->assertEquals([], $this->packageInfo->getConflict('E'));
7676
}
7777

78-
public function testGetRequireReturnPackageName()
78+
public function testGetVersion()
7979
{
80-
$this->assertEquals(['b'], $this->packageInfo->getRequire('A', false));
81-
$this->assertEquals(['d'], $this->packageInfo->getRequire('B', false));
82-
$this->assertEquals(['e'], $this->packageInfo->getRequire('C', false));
83-
$this->assertEquals([], $this->packageInfo->getRequire('D', false));
84-
$this->assertEquals([], $this->packageInfo->getRequire('E', false));
85-
}
86-
87-
public function testGetConflictReturnPackageName()
88-
{
89-
$this->assertEquals(['c'], $this->packageInfo->getConflict('A', false));
90-
$this->assertEquals([], $this->packageInfo->getConflict('B', false));
91-
$this->assertEquals([], $this->packageInfo->getConflict('C', false));
92-
$this->assertEquals(['c'], $this->packageInfo->getConflict('D', false));
93-
$this->assertEquals([], $this->packageInfo->getConflict('E', false));
80+
$this->assertEquals('0.1', $this->packageInfo->getVersion('A'));
81+
$this->assertEquals('0.2', $this->packageInfo->getVersion('B'));
82+
$this->assertEquals('0.1', $this->packageInfo->getVersion('C'));
83+
$this->assertEquals('0.3', $this->packageInfo->getVersion('D'));
84+
$this->assertEquals('0.4', $this->packageInfo->getVersion('E'));
85+
$this->assertEquals('', $this->packageInfo->getVersion('F'));
9486
}
9587
}

dev/tests/unit/testsuite/Magento/Framework/Module/StatusTest.php

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -156,14 +156,40 @@ public function testSetIsEnabledUnknown()
156156
$this->object->setIsEnabled(true, ['Module_Baz']);
157157
}
158158

159-
public function testGetUnchangedModules()
159+
/**
160+
* @dataProvider getModulesToChangeDataProvider
161+
* @param bool $firstEnabled
162+
* @param bool $secondEnabled
163+
* @param bool $thirdEnabled
164+
* @param bool $isEnabled
165+
* @param string[] $expected
166+
*/
167+
public function testGetModulesToChange($firstEnabled, $secondEnabled, $thirdEnabled, $isEnabled, $expected)
160168
{
161169
$modules = ['Module_Foo' => '', 'Module_Bar' => '', 'Module_Baz' => ''];
162170
$this->loader->expects($this->once())->method('load')->willReturn($modules);
163-
$this->moduleList->expects($this->at(0))->method('has')->with('Module_Foo')->willReturn(true);
164-
$this->moduleList->expects($this->at(1))->method('has')->with('Module_Bar')->willReturn(true);
165-
$this->moduleList->expects($this->at(2))->method('has')->with('Module_Baz')->willReturn(true);
166-
$result = $this->object->getUnchangedModules(true, ['Module_Foo', 'Module_Bar', 'Module_Baz']);
167-
$this->assertEquals(array_keys($modules), $result);
171+
$this->moduleList->expects($this->at(0))->method('has')->with('Module_Foo')->willReturn($firstEnabled);
172+
$this->moduleList->expects($this->at(1))->method('has')->with('Module_Bar')->willReturn($secondEnabled);
173+
$this->moduleList->expects($this->at(2))->method('has')->with('Module_Baz')->willReturn($thirdEnabled);
174+
$result = $this->object->getModulesToChange($isEnabled, ['Module_Foo', 'Module_Bar', 'Module_Baz']);
175+
$this->assertEquals($expected, $result);
176+
}
177+
178+
/**
179+
* @return array
180+
*/
181+
public function getModulesToChangeDataProvider()
182+
{
183+
return [
184+
[true, true, true, true, []],
185+
[true, true, false, true, ['Module_Baz']],
186+
[true, false, true, true, ['Module_Bar']],
187+
[true, false, false, true, ['Module_Bar', 'Module_Baz']],
188+
[false, false, false, true, ['Module_Foo', 'Module_Bar', 'Module_Baz']],
189+
[true, false, false, false, ['Module_Foo']],
190+
[false, true, false, false, ['Module_Bar']],
191+
[false, true, true, false, ['Module_Bar', 'Module_Baz']],
192+
[true, true, true, false, ['Module_Foo', 'Module_Bar', 'Module_Baz']],
193+
];
168194
}
169195
}

dev/tests/unit/testsuite/Magento/Setup/Controller/ConsoleControllerTest.php

Lines changed: 81 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,37 @@ public function helpActionForLanguageCurrencyTimezoneDataProvider()
301301
];
302302
}
303303

304+
public function testHelpActionForModuleList()
305+
{
306+
$this->request->expects($this->once())->method('getParam')->willReturn(ConsoleController::HELP_LIST_OF_MODULES);
307+
$moduleListMock = $this->getMock('Magento\Framework\Module\ModuleList', [], [], '', false);
308+
$moduleListMock
309+
->expects($this->once())
310+
->method('getNames')
311+
->will($this->returnValue(['Magento_Core', 'Magento_Store']));
312+
$fullModuleListMock = $this->getMock('Magento\Framework\Module\FullModuleList', [], [], '', false);
313+
$fullModuleListMock
314+
->expects($this->once())
315+
->method('getNames')
316+
->will($this->returnValue(['Magento_Core', 'Magento_Store', 'Magento_Directory']));
317+
$returnValueMap = [
318+
[
319+
'Magento\Framework\Module\ModuleList',
320+
[],
321+
$moduleListMock,
322+
],
323+
[
324+
'Magento\Framework\Module\FullModuleList',
325+
[],
326+
$fullModuleListMock,
327+
],
328+
];
329+
$this->objectManager->expects($this->exactly(2))
330+
->method('create')
331+
->will($this->returnValueMap($returnValueMap));
332+
$this->controller->helpAction();
333+
}
334+
304335
public function testHelpActionNoType()
305336
{
306337
$beginHelpString = "\n==-------------------==\n"
@@ -322,7 +353,7 @@ public function testHelpActionNoType()
322353
public function testModuleAction($command, $modules, $isForce, $expectedIsEnabled, $expectedModules)
323354
{
324355
$status = $this->getModuleActionMocks($command, $modules, $isForce, false);
325-
$status->expects($this->once())->method('getUnchangedModules')->willReturn([]);
356+
$status->expects($this->once())->method('getModulesToChange')->willReturn($expectedModules);
326357
if (!$isForce) {
327358
$status->expects($this->once())->method('checkConstraints')->willReturn([]);
328359
}
@@ -346,6 +377,44 @@ public function moduleActionDataProvider()
346377
];
347378
}
348379

380+
/**
381+
* @param string $command
382+
* @param string $modules
383+
* @param bool $isForce
384+
* @param bool $expectedIsEnabled
385+
* @param string[] $expectedModules
386+
* @dataProvider moduleActionEnabledSuggestionMessageDataProvider
387+
*/
388+
public function testModuleActionEnabledSuggestionMessage($command, $modules, $isForce, $expectedIsEnabled, $expectedModules)
389+
{
390+
$status = $this->getModuleActionMocks($command, $modules, $isForce, false);
391+
$status->expects($this->once())->method('getModulesToChange')->willReturn($expectedModules);
392+
if (!$isForce) {
393+
$status->expects($this->once())->method('checkConstraints')->willReturn([]);
394+
}
395+
$status->expects($this->once())
396+
->method('setIsEnabled')
397+
->with($expectedIsEnabled, $expectedModules);
398+
$this->consoleLogger->expects($this->once())
399+
->method('log')
400+
->with($this->stringContains(
401+
"To make sure that the enabled modules are properly registered, run 'update' command."
402+
));
403+
$this->controller->moduleAction();
404+
}
405+
406+
/**
407+
* @return array
408+
*/
409+
public function moduleActionEnabledSuggestionMessageDataProvider()
410+
{
411+
return [
412+
[ConsoleController::CMD_MODULE_ENABLE, 'Module_Foo,Module_Bar', false, true, ['Module_Foo', 'Module_Bar']],
413+
[ConsoleController::CMD_MODULE_ENABLE, 'Module_Foo,Module_Bar', true, true, ['Module_Foo', 'Module_Bar']],
414+
[ConsoleController::CMD_MODULE_ENABLE, 'Module_Foo,Module_Bar', false, true, ['Module_Foo']],
415+
];
416+
}
417+
349418
/**
350419
* @param string $command
351420
* @param string $modules
@@ -358,9 +427,9 @@ public function testModuleActionNoChanges($command, $modules, $isForce, $expecte
358427
{
359428
$status = $this->getModuleActionMocks($command, $modules, $isForce, true);
360429
$status->expects($this->once())
361-
->method('getUnchangedModules')
430+
->method('getModulesToChange')
362431
->with($expectedIsEnabled, $expectedModules)
363-
->willReturn($expectedModules);
432+
->willReturn([]);
364433
$status->expects($this->never())->method('checkConstraints');
365434
$status->expects($this->never())->method('setIsEnabled');
366435
$this->consoleLogger->expects($this->once())->method('log');
@@ -373,7 +442,7 @@ public function testModuleActionNoChanges($command, $modules, $isForce, $expecte
373442
* @param bool $isForce
374443
* @param bool $expectedIsEnabled
375444
* @param string[] $expectedModules
376-
* @param string[] $unchangedModules
445+
* @param string[] $modulesToChange
377446
* @dataProvider moduleActionPartialNoChangesDataProvider
378447
*/
379448
public function testModuleActionPartialNoChanges(
@@ -382,16 +451,16 @@ public function testModuleActionPartialNoChanges(
382451
$isForce,
383452
$expectedIsEnabled,
384453
$expectedModules,
385-
$unchangedModules
454+
$modulesToChange
386455
) {
387456
$status = $this->getModuleActionMocks($command, $modules, $isForce, false);
388-
$status->expects($this->once())->method('getUnchangedModules')->willReturn($unchangedModules);
457+
$status->expects($this->once())->method('getModulesToChange')->willReturn($modulesToChange);
389458
if (!$isForce) {
390459
$status->expects($this->once())->method('checkConstraints')->willReturn([]);
391460
}
392461
$status->expects($this->once())
393462
->method('setIsEnabled')
394-
->with($expectedIsEnabled, array_diff($expectedModules, $unchangedModules));
463+
->with($expectedIsEnabled, $modulesToChange);
395464
$this->consoleLogger->expects($this->once())->method('log');
396465
$this->controller->moduleAction();
397466
}
@@ -408,31 +477,31 @@ public function moduleActionPartialNoChangesDataProvider()
408477
false,
409478
true,
410479
['Module_Foo', 'Module_Bar'],
411-
['Module_Foo'],
480+
['Module_Bar'],
412481
],
413482
[
414483
ConsoleController::CMD_MODULE_ENABLE,
415484
'Module_Foo,Module_Bar',
416485
true,
417486
true,
418487
['Module_Foo', 'Module_Bar'],
419-
['Module_Foo'],
488+
['Module_Bar'],
420489
],
421490
[
422491
ConsoleController::CMD_MODULE_DISABLE,
423492
'Module_Foo,Module_Bar',
424493
false,
425494
false,
426495
['Module_Foo', 'Module_Bar'],
427-
['Module_Foo'],
496+
['Module_Bar'],
428497
],
429498
[
430499
ConsoleController::CMD_MODULE_DISABLE,
431500
'Module_Foo,Module_Bar',
432501
true,
433502
false,
434503
['Module_Foo', 'Module_Bar'],
435-
['Module_Foo'],
504+
['Module_Bar'],
436505
],
437506
];
438507
}
@@ -472,7 +541,7 @@ public function testModuleActionNotAllowed()
472541
false,
473542
false
474543
);
475-
$status->expects($this->once())->method('getUnchangedModules')->willReturn([]);
544+
$status->expects($this->once())->method('getModulesToChange')->willReturn(['Module_Foo', 'Module_Bar']);
476545
$status->expects($this->once())
477546
->method('checkConstraints')
478547
->willReturn(['Circular dependency of Foo and Bar']);

0 commit comments

Comments
 (0)