Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ModulesTest.php
Go to the documentation of this file.
1 <?php
8 
9 use \Magento\Setup\Controller\Modules;
10 
11 class ModulesTest extends \PHPUnit\Framework\TestCase
12 {
16  private $objectManager;
17 
21  private $status;
22 
26  private $modules;
27 
33  private $controller;
34 
35  public function setUp()
36  {
37  $this->objectManager = $this->getMockForAbstractClass(\Magento\Framework\ObjectManagerInterface::class);
41  $objectManagerProvider = $this->createMock(\Magento\Setup\Model\ObjectManagerProvider::class);
42  $objectManagerProvider->expects($this->once())->method('get')->willReturn($this->objectManager);
43  $this->modules = $this->createMock(\Magento\Setup\Model\ModuleStatus::class);
44  $this->status = $this->createMock(\Magento\Framework\Module\Status::class);
45  $this->objectManager->expects($this->once())->method('create')->will($this->returnValue($this->status));
46  $this->controller = new Modules($this->modules, $objectManagerProvider);
47  }
48 
54  public function testIndexAction(array $expected)
55  {
56  $this->modules->expects($this->once())->method('getAllModules')->willReturn($expected['modules']);
57  $this->status->expects($this->once())->method('checkConstraints')->willReturn([]);
58  $jsonModel = $this->controller->indexAction();
59  $this->assertInstanceOf(\Zend\View\Model\JsonModel::class, $jsonModel);
60  $variables = $jsonModel->getVariables();
61  $this->assertArrayHasKey('success', $variables);
62  $this->assertTrue($variables['success']);
63  }
64 
70  public function testIndexActionWithError(array $expected)
71  {
72  $this->modules->expects($this->once())->method('getAllModules')->willReturn($expected['modules']);
73  $this->status->expects($this->once())
74  ->method('checkConstraints')
75  ->willReturn(['ModuleA', 'ModuleB']);
76  $jsonModel = $this->controller->indexAction();
77  $this->assertInstanceOf(\Zend\View\Model\JsonModel::class, $jsonModel);
78  $variables = $jsonModel->getVariables();
79  $this->assertArrayHasKey('success', $variables);
80  $this->assertArrayHasKey('error', $variables);
81  $this->assertFalse($variables['success']);
82  }
83 
87  public function indexActionDataProvider()
88  {
89  return [
90  'with_modules' => [['modules' => [
91  'module1' => ['name' => 'module1', 'selected' => true, 'disabled' => true],
92  'module2' => ['name' => 'module2', 'selected' => true, 'disabled' => true],
93  'module3' => ['name' => 'module3', 'selected' => true, 'disabled' => true]
94  ]]],
95  'some_not_selected' => [['modules' => [
96  'module1' => ['name' => 'module1', 'selected' => false, 'disabled' => true],
97  'module2' => ['name' => 'module2', 'selected' => true, 'disabled' => true],
98  'module3' => ['name' => 'module3', 'selected' => false, 'disabled' => true]
99  ]]],
100  'some_disabled' => [['modules' => [
101  'module1' => ['name' => 'module1', 'selected' => true, 'disabled' => false],
102  'module2' => ['name' => 'module2', 'selected' => true, 'disabled' => true],
103  'module3' => ['name' => 'module3', 'selected' => true, 'disabled' => false]
104  ]]],
105  'no_modules' => [['modules' => []]],
106  ];
107  }
108 }