13 use Symfony\Component\Console\Tester\CommandTester;
22 private $dependencyChecker;
32 private $composerInfo;
42 private $backupRollbackFactory;
56 $this->dependencyChecker = $this->createMock(\
Magento\Framework\Composer\DependencyChecker::class);
57 $this->
remove = $this->createMock(\
Magento\Framework\Composer\Remove::class);
58 $this->composerInfo = $this->createMock(\
Magento\Framework\Composer\ComposerInformation::class);
59 $this->cache = $this->createMock(\
Magento\Framework\
App\Cache::class);
60 $this->backupRollbackFactory = $this->createMock(\
Magento\Framework\Setup\BackupRollbackFactory::class);
63 $this->dependencyChecker,
67 $this->backupRollbackFactory
70 $this->tester =
new CommandTester($this->command);
75 $dependencies[
'vendor/language-ua_ua'] = [];
77 $this->dependencyChecker->expects($this->once())
78 ->method(
'checkDependencies')
79 ->with([
'vendor/language-ua_ua'])
80 ->willReturn($dependencies);
82 $this->composerInfo->expects($this->once())
83 ->method(
'getRootRequiredPackageTypesByName')
86 'vendor/language-ua_ua' =>
'magento2-language' 90 $backupRollback = $this->createMock(\
Magento\Framework\Setup\BackupRollback::class);
91 $backupRollback->expects($this->once())->method(
'codeBackup');
93 $this->backupRollbackFactory->expects($this->once())
95 ->willReturn($backupRollback);
97 $this->
remove->expects($this->once())->method(
'remove');
98 $this->cache->expects($this->once())->method(
'clean');
100 $this->tester->execute([
'package' => [
'vendor/language-ua_ua'],
'--backup-code' =>
true]);
105 $dependencies[
'vendor/language-ua_ua'] = [];
107 $this->dependencyChecker->expects($this->once())
108 ->method(
'checkDependencies')
109 ->with([
'vendor/language-ua_ua'])
110 ->willReturn($dependencies);
112 $this->composerInfo->expects($this->once())
113 ->method(
'getRootRequiredPackageTypesByName')
116 'vendor/language-ua_ua' =>
'magento2-language' 120 $this->backupRollbackFactory->expects($this->never())->method(
'create');
121 $this->
remove->expects($this->once())->method(
'remove');
122 $this->cache->expects($this->once())->method(
'clean');
124 $this->tester->execute([
'package' => [
'vendor/language-ua_ua']]);
125 $this->assertContains(
'You are removing language package without a code backup.', $this->tester->getDisplay());
130 $dependencies[
'vendor/language-ua_ua'] = [
'some/dependency'];
132 $this->dependencyChecker->expects($this->once())
133 ->method(
'checkDependencies')
134 ->with([
'vendor/language-ua_ua'])
135 ->willReturn($dependencies);
137 $this->composerInfo->expects($this->once())
138 ->method(
'getRootRequiredPackageTypesByName')
141 'vendor/language-ua_ua' =>
'magento2-language' 145 $this->
remove->expects($this->never())->method(
'remove');
146 $this->cache->expects($this->never())->method(
'clean');
148 $this->tester->execute([
'package' => [
'vendor/language-ua_ua']]);
149 $this->assertContains(
150 'Package vendor/language-ua_ua has dependencies and will be skipped',
151 $this->tester->getDisplay()
153 $this->assertContains(
'Nothing is removed.', $this->tester->getDisplay());
158 $dependencies[
'vendor/language-ua_ua'] = [];
160 $this->dependencyChecker->expects($this->once())
161 ->method(
'checkDependencies')
162 ->with([
'vendor/language-ua_ua'])
163 ->willReturn($dependencies);
165 $this->composerInfo->expects($this->once())
166 ->method(
'getRootRequiredPackageTypesByName')
169 'vendor/language-ua_ua' =>
'library' 173 $this->
remove->expects($this->never())->method(
'remove');
174 $this->cache->expects($this->never())->method(
'clean');
176 $this->tester->execute([
'package' => [
'vendor/language-ua_ua']]);
177 $this->assertContains(
178 'Package vendor/language-ua_ua is not a Magento language and will be skipped',
179 $this->tester->getDisplay()
181 $this->assertContains(
'Nothing is removed.', $this->tester->getDisplay());
testExecutePackageNoLanguage()
testExecuteNoBackupOption()
testExecutePackageHasDependency()