Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ModuleStatusTest.php
Go to the documentation of this file.
1 <?php
8 
9 use \Magento\Setup\Model\ModuleStatus;
10 
11 class ModuleStatusTest extends \PHPUnit\Framework\TestCase
12 {
16  private $moduleLoader;
17 
21  private $deploymentConfig;
22 
26  private $dependencyChecker;
27 
31  private $objectManager;
32 
36  private $objectManagerProvider;
37 
38  public function setUp()
39  {
40  $this->moduleLoader = $this->createMock(\Magento\Framework\Module\ModuleList\Loader::class);
41  $this->dependencyChecker =
42  $this->createMock(\Magento\Framework\Module\DependencyChecker::class);
43  $this->deploymentConfig = $this->createMock(\Magento\Framework\App\DeploymentConfig::class);
44  $this->objectManager = $this->getMockForAbstractClass(\Magento\Framework\ObjectManagerInterface::class);
45  $this->objectManagerProvider =
46  $this->createMock(\Magento\Setup\Model\ObjectManagerProvider::class);
47  $this->objectManagerProvider->expects($this->once())->method('get')->willReturn($this->objectManager);
48  $this->objectManager->expects($this->once())->method('get')->willReturn($this->dependencyChecker);
49  }
50 
58  public function testGetAllModules($expectedAllModules, $expectedConfig, $expectedResult)
59  {
60  $this->moduleLoader->expects($this->once())->method('load')->will($this->returnValue($expectedAllModules));
61  $this->deploymentConfig->expects($this->once())->method('get')
62  ->will($this->returnValue($expectedConfig));
63  $this->dependencyChecker->expects($this->any())->method('checkDependenciesWhenDisableModules')->willReturn(
64  ['module1' => [], 'module2' => [], 'module3' => [], 'module4' => []]
65  );
66 
67  $moduleStatus = new ModuleStatus($this->moduleLoader, $this->deploymentConfig, $this->objectManagerProvider);
68  $allModules = $moduleStatus->getAllModules();
69  $this->assertSame($expectedResult[0], $allModules['module1']['selected']);
70  $this->assertSame($expectedResult[1], $allModules['module2']['selected']);
71  $this->assertSame($expectedResult[2], $allModules['module3']['selected']);
72  $this->assertSame($expectedResult[3], $allModules['module4']['selected']);
73  }
74 
83  public function testGetAllModulesWithInputs($expectedAllModules, $expectedConfig, $expectedResult)
84  {
85  $this->moduleLoader->expects($this->once())->method('load')->will($this->returnValue($expectedAllModules));
86  $this->deploymentConfig->expects($this->never())->method('get')
87  ->will($this->returnValue($expectedConfig));
88  $this->dependencyChecker->expects($this->any())->method('checkDependenciesWhenDisableModules')->willReturn(
89  ['module1' => [], 'module2' => [], 'module3' => [], 'module4' => []]
90  );
91 
92  $moduleStatus = new ModuleStatus($this->moduleLoader, $this->deploymentConfig, $this->objectManagerProvider);
93  $allModules = $moduleStatus->getAllModules(['module1', 'module2']);
94  $this->assertSame(true, $allModules['module1']['selected']);
95  $this->assertSame(true, $allModules['module2']['selected']);
96  $this->assertSame(false, $allModules['module3']['selected']);
97  $this->assertSame(false, $allModules['module4']['selected']);
98  }
99 
107  public function testSetIsEnabled($expectedAllModules, $expectedConfig, $expectedResult)
108  {
109  $this->moduleLoader->expects($this->once())->method('load')->will($this->returnValue($expectedAllModules));
110  $this->deploymentConfig->expects($this->once())->method('get')
111  ->will($this->returnValue($expectedConfig));
112  $this->dependencyChecker->expects($this->any())->method('checkDependenciesWhenDisableModules')->willReturn(
113  ['module1' => [], 'module2' => [], 'module3' => [], 'module4' => []]
114  );
115 
116  $moduleStatus = new ModuleStatus($this->moduleLoader, $this->deploymentConfig, $this->objectManagerProvider);
117  $moduleStatus->setIsEnabled(false, 'module1');
118  $allModules = $moduleStatus->getAllModules();
119  $this->assertSame(false, $allModules['module1']['selected']);
120  $this->assertSame($expectedResult[1], $allModules['module2']['selected']);
121  $this->assertSame($expectedResult[2], $allModules['module3']['selected']);
122  $this->assertSame($expectedResult[3], $allModules['module4']['selected']);
123  }
124 
128  public function getAllModulesDataProvider()
129  {
130  $expectedAllModules = [
131  'module1' => ['name' => 'module1'],
132  'module2' => ['name' => 'module2'],
133  'module3' => ['name' => 'module3'],
134  'module4' => ['name' => 'module4']
135  ];
136  $expectedConfig = ['module1' => 0, 'module3' => 0];
137  return [
138  [$expectedAllModules, $expectedConfig, [false, true, false, true]],
139  [$expectedAllModules, [], [true, true, true, true]],
140  ];
141  }
142 }
testSetIsEnabled($expectedAllModules, $expectedConfig, $expectedResult)
testGetAllModules($expectedAllModules, $expectedConfig, $expectedResult)
testGetAllModulesWithInputs($expectedAllModules, $expectedConfig, $expectedResult)