1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Setup\Test\Unit\Controller;
use \Magento\Setup\Controller\Modules;
class ModulesTest extends \PHPUnit\Framework\TestCase
{
/**
* @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Framework\ObjectManagerInterface
*/
private $objectManager;
/**
* @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Framework\Module\Status
*/
private $status;
/**
* @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Setup\Model\ModuleStatus
*/
private $modules;
/**
* Controller
*
* @var \Magento\Setup\Controller\Modules
*/
private $controller;
public function setUp()
{
$this->objectManager = $this->getMockForAbstractClass(\Magento\Framework\ObjectManagerInterface::class);
/** @var
* $objectManagerProvider \PHPUnit_Framework_MockObject_MockObject|\Magento\Setup\Model\ObjectManagerProvider
*/
$objectManagerProvider = $this->createMock(\Magento\Setup\Model\ObjectManagerProvider::class);
$objectManagerProvider->expects($this->once())->method('get')->willReturn($this->objectManager);
$this->modules = $this->createMock(\Magento\Setup\Model\ModuleStatus::class);
$this->status = $this->createMock(\Magento\Framework\Module\Status::class);
$this->objectManager->expects($this->once())->method('create')->will($this->returnValue($this->status));
$this->controller = new Modules($this->modules, $objectManagerProvider);
}
/**
* @param array $expected
*
* @dataProvider indexActionDataProvider
*/
public function testIndexAction(array $expected)
{
$this->modules->expects($this->once())->method('getAllModules')->willReturn($expected['modules']);
$this->status->expects($this->once())->method('checkConstraints')->willReturn([]);
$jsonModel = $this->controller->indexAction();
$this->assertInstanceOf(\Zend\View\Model\JsonModel::class, $jsonModel);
$variables = $jsonModel->getVariables();
$this->assertArrayHasKey('success', $variables);
$this->assertTrue($variables['success']);
}
/**
* @param array $expected
*
* @dataProvider indexActionDataProvider
*/
public function testIndexActionWithError(array $expected)
{
$this->modules->expects($this->once())->method('getAllModules')->willReturn($expected['modules']);
$this->status->expects($this->once())
->method('checkConstraints')
->willReturn(['ModuleA', 'ModuleB']);
$jsonModel = $this->controller->indexAction();
$this->assertInstanceOf(\Zend\View\Model\JsonModel::class, $jsonModel);
$variables = $jsonModel->getVariables();
$this->assertArrayHasKey('success', $variables);
$this->assertArrayHasKey('error', $variables);
$this->assertFalse($variables['success']);
}
/**
* @return array
*/
public function indexActionDataProvider()
{
return [
'with_modules' => [['modules' => [
'module1' => ['name' => 'module1', 'selected' => true, 'disabled' => true],
'module2' => ['name' => 'module2', 'selected' => true, 'disabled' => true],
'module3' => ['name' => 'module3', 'selected' => true, 'disabled' => true]
]]],
'some_not_selected' => [['modules' => [
'module1' => ['name' => 'module1', 'selected' => false, 'disabled' => true],
'module2' => ['name' => 'module2', 'selected' => true, 'disabled' => true],
'module3' => ['name' => 'module3', 'selected' => false, 'disabled' => true]
]]],
'some_disabled' => [['modules' => [
'module1' => ['name' => 'module1', 'selected' => true, 'disabled' => false],
'module2' => ['name' => 'module2', 'selected' => true, 'disabled' => true],
'module3' => ['name' => 'module3', 'selected' => true, 'disabled' => false]
]]],
'no_modules' => [['modules' => []]],
];
}
}