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
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Setup\Test\Unit\Model;
use Magento\Framework\Config\ConfigOptionsListConstants;
use Magento\Framework\Config\File\ConfigFilePool;
use Magento\Setup\Model\ModuleRegistryUninstaller;
class ModuleRegistryUninstallerTest extends \PHPUnit\Framework\TestCase
{
/**
* @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Framework\App\DeploymentConfig
*/
private $deploymentConfig;
/**
* @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Framework\App\DeploymentConfig\Writer
*/
private $writer;
/**
* @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Framework\Module\ModuleList\Loader
*/
private $loader;
/**
* @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Setup\Module\DataSetup
*/
private $dataSetup;
/**
* @var \PHPUnit_Framework_MockObject_MockObject|\Symfony\Component\Console\Output\OutputInterface
*/
private $output;
/**
* @var ModuleRegistryUninstaller
*/
private $moduleRegistryUninstaller;
public function setUp()
{
$this->deploymentConfig = $this->createMock(\Magento\Framework\App\DeploymentConfig::class);
$this->writer = $this->createMock(\Magento\Framework\App\DeploymentConfig\Writer::class);
$this->loader = $this->createMock(\Magento\Framework\Module\ModuleList\Loader::class);
$this->dataSetup = $this->createMock(\Magento\Setup\Module\DataSetup::class);
$dataSetupFactory = $this->createMock(\Magento\Setup\Module\DataSetupFactory::class);
$dataSetupFactory->expects($this->any())->method('create')->willReturn($this->dataSetup);
$this->output = $this->createMock(\Symfony\Component\Console\Output\OutputInterface::class);
$this->moduleRegistryUninstaller = new ModuleRegistryUninstaller(
$dataSetupFactory,
$this->deploymentConfig,
$this->writer,
$this->loader
);
}
public function testRemoveModulesFromDb()
{
$this->output->expects($this->atLeastOnce())->method('writeln');
$this->dataSetup->expects($this->atLeastOnce())->method('deleteTableRow');
$this->moduleRegistryUninstaller->removeModulesFromDb($this->output, ['moduleA', 'moduleB']);
}
public function testRemoveModulesFromDeploymentConfig()
{
$this->output->expects($this->atLeastOnce())->method('writeln');
$this->deploymentConfig->expects($this->once())
->method('getConfigData')
->willReturn(['moduleA' => 1, 'moduleB' => 1, 'moduleC' => 1, 'moduleD' => 1]);
$this->loader->expects($this->once())->method('load')->willReturn(['moduleC' => [], 'moduleD' => []]);
$this->writer->expects($this->once())
->method('saveConfig')
->with(
[
ConfigFilePool::APP_CONFIG => [
ConfigOptionsListConstants::KEY_MODULES => ['moduleC' => 1, 'moduleD' => 1]
]
]
);
$this->moduleRegistryUninstaller->removeModulesFromDeploymentConfig($this->output, ['moduleA', 'moduleB']);
}
}