15 private $themePackageInfo;
25 private $themeProvider;
30 private $themeUninstaller;
39 $this->themePackageInfo = $this->createMock(\
Magento\
Theme\Model\
Theme\ThemePackageInfo::class);
40 $this->
remove = $this->createMock(\
Magento\Framework\Composer\Remove::class);
41 $this->themeProvider = $this->createMock(\
Magento\
Theme\Model\
Theme\ThemeProvider::class);
42 $this->themeUninstaller =
new ThemeUninstaller($this->themePackageInfo, $this->
remove, $this->themeProvider);
43 $this->
output = $this->getMockForAbstractClass(
44 \Symfony\Component\Console\Output\OutputInterface::class,
53 $this->
output->expects($this->atLeastOnce())->method(
'writeln');
54 $this->themePackageInfo->expects($this->never())->method($this->anything());
55 $this->
remove->expects($this->never())->method($this->anything());
57 $theme->expects($this->exactly(3))->method(
'delete');
58 $this->themeProvider->expects($this->exactly(3))->method(
'getThemeByFullPath')->willReturn(
$theme);
59 $this->themeUninstaller->uninstallRegistry(
61 [
'frontend/Magento/ThemeA',
'frontend/Magento/ThemeB',
'frontend/Magento/ThemeC']
67 $this->
output->expects($this->atLeastOnce())->method(
'writeln');
68 $this->themePackageInfo->expects($this->at(0))->method(
'getPackageName')->willReturn(
'packageA');
69 $this->themePackageInfo->expects($this->at(1))->method(
'getPackageName')->willReturn(
'packageB');
70 $this->themePackageInfo->expects($this->at(2))->method(
'getPackageName')->willReturn(
'packageC');
71 $this->
remove->expects($this->once())
73 ->with([
'packageA',
'packageB',
'packageC'])
75 $this->themeProvider->expects($this->never())->method($this->anything());
76 $this->themeUninstaller->uninstallCode(
78 [
'frontend/Magento/ThemeA',
'frontend/Magento/ThemeB',
'frontend/Magento/ThemeC']
output($string, $level=INFO, $label='')