From ad2f5984cd42ad11a20d008be7179264060438f7 Mon Sep 17 00:00:00 2001 From: Jan Helke Date: Fri, 16 Mar 2018 22:11:12 +0100 Subject: [PATCH] [TASK] Make ExtensionManagementServiceTest notice free Releases: master Resolves: #84380 Change-Id: Iff2cf91dbd4bc7ae43aa8d81d3b88edc7c2fef67 Reviewed-on: https://review.typo3.org/56257 Tested-by: TYPO3com Reviewed-by: Christian Kuhn Tested-by: Christian Kuhn Reviewed-by: Tymoteusz Motylewski Tested-by: Tymoteusz Motylewski --- .../Service/ExtensionManagementService.php | 2 +- .../ExtensionManagementServiceTest.php | 105 +++++++++--------- 2 files changed, 56 insertions(+), 51 deletions(-) diff --git a/typo3/sysext/extensionmanager/Classes/Service/ExtensionManagementService.php b/typo3/sysext/extensionmanager/Classes/Service/ExtensionManagementService.php index 11ade17c5c13..d8613a89df02 100644 --- a/typo3/sysext/extensionmanager/Classes/Service/ExtensionManagementService.php +++ b/typo3/sysext/extensionmanager/Classes/Service/ExtensionManagementService.php @@ -361,7 +361,7 @@ protected function installDependencies(array $installQueue) foreach ($installQueue as $extensionKey => $_) { $this->installUtility->install($extensionKey); $this->emitHasInstalledExtensionSignal($extensionKey); - if (!is_array($resolvedDependencies['installed'])) { + if (!isset($resolvedDependencies['installed']) || !is_array($resolvedDependencies['installed'])) { $resolvedDependencies['installed'] = []; } $resolvedDependencies['installed'][$extensionKey] = $extensionKey; diff --git a/typo3/sysext/extensionmanager/Tests/Unit/Service/ExtensionManagementServiceTest.php b/typo3/sysext/extensionmanager/Tests/Unit/Service/ExtensionManagementServiceTest.php index 6c1ce605d279..56f0b0ed1b67 100644 --- a/typo3/sysext/extensionmanager/Tests/Unit/Service/ExtensionManagementServiceTest.php +++ b/typo3/sysext/extensionmanager/Tests/Unit/Service/ExtensionManagementServiceTest.php @@ -1,4 +1,5 @@ getAccessibleMock( - \TYPO3\CMS\Extensionmanager\Service\ExtensionManagementService::class, + ExtensionManagementService::class, ['downloadDependencies', 'uninstallDependenciesToBeUpdated', 'setInExtensionRepository', 'downloadMainExtension', 'isAutomaticInstallationEnabled'] ); $managementMock->expects($this->any())->method('downloadMainExtension')->will($this->returnValue([])); $managementMock->expects($this->any())->method('isAutomaticInstallationEnabled')->will($this->returnValue([false])); - $extensionModelMock = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Domain\Model\Extension::class); + $extensionModelMock = $this->getAccessibleMock(Extension::class); $extensionModelMock->_set('extensionKey', 'foobar'); $extensionModelMock->_set('version', '1.0.0'); - $dependencyUtilityMock = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\DependencyUtility::class, ['checkDependencies']); + $dependencyUtilityMock = $this->getAccessibleMock(DependencyUtility::class, ['checkDependencies']); $dependencyUtilityMock->expects($this->atLeastOnce())->method('checkDependencies'); $managementMock->_set('dependencyUtility', $dependencyUtilityMock); - $downloadQueueMock = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Domain\Model\DownloadQueue::class, ['isCopyQueueEmpty', 'isQueueEmpty', 'resetExtensionQueue', 'addExtensionToInstallQueue']); + $downloadQueueMock = $this->getAccessibleMock(DownloadQueue::class, ['isCopyQueueEmpty', 'isQueueEmpty', 'resetExtensionQueue', 'addExtensionToInstallQueue']); $downloadQueueMock->expects($this->any())->method('isCopyQueueEmpty')->willReturn(true); $downloadQueueMock->expects($this->at(1))->method('isQueueEmpty')->with('download')->willReturn(false); $downloadQueueMock->expects($this->at(4))->method('isQueueEmpty')->with('download')->willReturn(true); @@ -62,18 +67,18 @@ public function resolveDependenciesCallsDownloadDependenciesIfDownloadKeyExistsI public function resolveDependenciesCallsUpdateAndDownloadDependenciesIfUpdateKeyExistsInQueue() { $managementMock = $this->getAccessibleMock( - \TYPO3\CMS\Extensionmanager\Service\ExtensionManagementService::class, + ExtensionManagementService::class, ['downloadDependencies', 'uninstallDependenciesToBeUpdated', 'setInExtensionRepository', 'downloadMainExtension', 'isAutomaticInstallationEnabled'] ); $managementMock->expects($this->any())->method('downloadMainExtension')->will($this->returnValue([])); $managementMock->expects($this->any())->method('isAutomaticInstallationEnabled')->will($this->returnValue(true)); - $extensionModelMock = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Domain\Model\Extension::class); + $extensionModelMock = $this->getAccessibleMock(Extension::class); $extensionModelMock->_set('extensionKey', 'foobar'); $extensionModelMock->_set('version', '1.0.0'); - $dependencyUtilityMock = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\DependencyUtility::class, ['checkDependencies']); + $dependencyUtilityMock = $this->getAccessibleMock(DependencyUtility::class, ['checkDependencies']); $dependencyUtilityMock->expects($this->atLeastOnce())->method('checkDependencies'); $managementMock->_set('dependencyUtility', $dependencyUtilityMock); - $downloadQueueMock = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Domain\Model\DownloadQueue::class, ['isCopyQueueEmpty', 'isQueueEmpty', 'resetExtensionQueue', 'addExtensionToInstallQueue']); + $downloadQueueMock = $this->getAccessibleMock(DownloadQueue::class, ['isCopyQueueEmpty', 'isQueueEmpty', 'resetExtensionQueue', 'addExtensionToInstallQueue']); $downloadQueueMock->expects($this->any())->method('isCopyQueueEmpty')->willReturn(true); $downloadQueueMock->expects($this->at(1))->method('isQueueEmpty')->with('download')->willReturn(false); $downloadQueueMock->expects($this->at(4))->method('isQueueEmpty')->with('download')->willReturn(true); @@ -94,19 +99,19 @@ public function resolveDependenciesCallsUpdateAndDownloadDependenciesIfUpdateKey */ public function downloadDependenciesCallsDownloadUtilityDownloadMethod() { - $managementMock = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Service\ExtensionManagementService::class, [ + $managementMock = $this->getAccessibleMock(ExtensionManagementService::class, [ 'dummy' ]); - $extensionModelMock = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Domain\Model\Extension::class, ['getExtensionKey']); + $extensionModelMock = $this->getAccessibleMock(Extension::class, ['getExtensionKey']); $extensionModelMock->_set('extensionKey', 'foobar'); $extensionModelMock->_set('version', '1.0.0'); - $dependencyUtilityMock = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\DependencyUtility::class); + $dependencyUtilityMock = $this->getAccessibleMock(DependencyUtility::class); $dependencyUtilityMock->expects($this->atLeastOnce())->method('checkDependencies'); - $installUtilityMock = $this->getMockBuilder(\TYPO3\CMS\Extensionmanager\Utility\InstallUtility::class)->getMock(); + $installUtilityMock = $this->getMockBuilder(InstallUtility::class)->getMock(); $installUtilityMock->expects($this->any())->method('enrichExtensionWithDetails')->will($this->returnValue([])); - $extensionModelUtilityMock = $this->getMockBuilder(\TYPO3\CMS\Extensionmanager\Utility\ExtensionModelUtility::class)->getMock(); + $extensionModelUtilityMock = $this->getMockBuilder(ExtensionModelUtility::class)->getMock(); $extensionModelUtilityMock->expects($this->any())->method('mapExtensionArrayToModel')->will($this->returnValue($extensionModelMock)); $managementMock->_set('dependencyUtility', $dependencyUtilityMock); $managementMock->_set('installUtility', $installUtilityMock); @@ -115,8 +120,8 @@ public function downloadDependenciesCallsDownloadUtilityDownloadMethod() $downloadQueue = [ $extensionModelMock ]; - $downloadQueueMock = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Domain\Model\DownloadQueue::class, ['removeExtensionFromQueue', 'addExtensionToInstallQueue']); - $downloadUtilityMock = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\DownloadUtility::class, ['download']); + $downloadQueueMock = $this->getAccessibleMock(DownloadQueue::class, ['removeExtensionFromQueue', 'addExtensionToInstallQueue']); + $downloadUtilityMock = $this->getAccessibleMock(DownloadUtility::class, ['download']); $downloadUtilityMock->expects($this->once())->method('download')->with($extensionModelMock); $managementMock->_set('downloadUtility', $downloadUtilityMock); $managementMock->_set('downloadQueue', $downloadQueueMock); @@ -128,12 +133,12 @@ public function downloadDependenciesCallsDownloadUtilityDownloadMethod() */ public function downloadDependenciesCallsRemoveExtensionFromQueue() { - $managementMock = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Service\ExtensionManagementService::class, [ + $managementMock = $this->getAccessibleMock(ExtensionManagementService::class, [ 'dummy' ]); - /** @var \TYPO3\CMS\Extensionmanager\Domain\Model\Extension $extensionModelMock */ - $extensionModelMock = $this->getMockBuilder(\TYPO3\CMS\Extensionmanager\Domain\Model\Extension::class) + /** @var Extension $extensionModelMock */ + $extensionModelMock = $this->getMockBuilder(Extension::class) ->setMethods(['getExtensionKey']) ->getMock(); $extensionModelMock->setExtensionKey('foobar'); @@ -142,18 +147,18 @@ public function downloadDependenciesCallsRemoveExtensionFromQueue() $extensionModelMock ]; - $dependencyUtilityMock = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\DependencyUtility::class); + $dependencyUtilityMock = $this->getAccessibleMock(DependencyUtility::class); $dependencyUtilityMock->expects($this->atLeastOnce())->method('checkDependencies'); - $installUtilityMock = $this->getMockBuilder(\TYPO3\CMS\Extensionmanager\Utility\InstallUtility::class)->getMock(); + $installUtilityMock = $this->getMockBuilder(InstallUtility::class)->getMock(); $installUtilityMock->expects($this->any())->method('enrichExtensionWithDetails')->will($this->returnValue([])); - $extensionModelUtilityMock = $this->getMockBuilder(\TYPO3\CMS\Extensionmanager\Utility\ExtensionModelUtility::class)->getMock(); + $extensionModelUtilityMock = $this->getMockBuilder(ExtensionModelUtility::class)->getMock(); $extensionModelUtilityMock->expects($this->any())->method('mapExtensionArrayToModel')->will($this->returnValue($extensionModelMock)); $managementMock->_set('dependencyUtility', $dependencyUtilityMock); $managementMock->_set('installUtility', $installUtilityMock); $managementMock->_set('extensionModelUtility', $extensionModelUtilityMock); - $downloadQueueMock = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Domain\Model\DownloadQueue::class, ['removeExtensionFromQueue', 'addExtensionToInstallQueue']); - $downloadUtilityMock = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\DownloadUtility::class, ['download']); + $downloadQueueMock = $this->getAccessibleMock(DownloadQueue::class, ['removeExtensionFromQueue', 'addExtensionToInstallQueue']); + $downloadUtilityMock = $this->getAccessibleMock(DownloadUtility::class, ['download']); $downloadQueueMock->expects($this->once())->method('removeExtensionFromQueue')->with($extensionModelMock); $managementMock->_set('downloadUtility', $downloadUtilityMock); $managementMock->_set('downloadQueue', $downloadQueueMock); @@ -165,29 +170,29 @@ public function downloadDependenciesCallsRemoveExtensionFromQueue() */ public function downloadDependenciesReturnsResolvedDependencies() { - $managementMock = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Service\ExtensionManagementService::class, [ + $managementMock = $this->getAccessibleMock(ExtensionManagementService::class, [ 'dummy' ]); - $extensionModelMock = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Domain\Model\Extension::class, ['getExtensionKey']); + $extensionModelMock = $this->getAccessibleMock(Extension::class, ['getExtensionKey']); $extensionModelMock->_set('extensionKey', 'foobar'); $extensionModelMock->_set('version', '1.0.0'); $downloadQueue = [ $extensionModelMock ]; - $dependencyUtilityMock = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\DependencyUtility::class); + $dependencyUtilityMock = $this->getAccessibleMock(DependencyUtility::class); $dependencyUtilityMock->expects($this->atLeastOnce())->method('checkDependencies'); - $installUtilityMock = $this->getMockBuilder(\TYPO3\CMS\Extensionmanager\Utility\InstallUtility::class)->getMock(); + $installUtilityMock = $this->getMockBuilder(InstallUtility::class)->getMock(); $installUtilityMock->expects($this->any())->method('enrichExtensionWithDetails')->will($this->returnValue([])); - $extensionModelUtilityMock = $this->getMockBuilder(\TYPO3\CMS\Extensionmanager\Utility\ExtensionModelUtility::class)->getMock(); + $extensionModelUtilityMock = $this->getMockBuilder(ExtensionModelUtility::class)->getMock(); $extensionModelUtilityMock->expects($this->any())->method('mapExtensionArrayToModel')->will($this->returnValue($extensionModelMock)); $managementMock->_set('dependencyUtility', $dependencyUtilityMock); $managementMock->_set('installUtility', $installUtilityMock); $managementMock->_set('extensionModelUtility', $extensionModelUtilityMock); - $downloadQueueMock = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Domain\Model\DownloadQueue::class, ['removeExtensionFromQueue', 'addExtensionToInstallQueue']); - $downloadUtilityMock = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\DownloadUtility::class, ['download']); + $downloadQueueMock = $this->getAccessibleMock(DownloadQueue::class, ['removeExtensionFromQueue', 'addExtensionToInstallQueue']); + $downloadUtilityMock = $this->getAccessibleMock(DownloadUtility::class, ['download']); $extensionModelMock->expects($this->atLeastOnce())->method('getExtensionKey')->will($this->returnValue('foobar')); $managementMock->_set('downloadUtility', $downloadUtilityMock); $managementMock->_set('downloadQueue', $downloadQueueMock); @@ -200,17 +205,17 @@ public function downloadDependenciesReturnsResolvedDependencies() */ public function uninstallDependenciesToBeUpdatedCallsUninstall() { - $managementMock = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Service\ExtensionManagementService::class, [ + $managementMock = $this->getAccessibleMock(ExtensionManagementService::class, [ 'dummy' ]); - $extensionModelMock = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Domain\Model\Extension::class, ['getExtensionKey']); + $extensionModelMock = $this->getAccessibleMock(Extension::class, ['getExtensionKey']); $extensionModelMock->_set('extensionKey', 'foobar'); $extensionModelMock->_set('version', '1.0.0'); $extensionModelMock->expects($this->atLeastOnce())->method('getExtensionKey')->will($this->returnValue('foobar')); $downloadQueue = [ $extensionModelMock ]; - $installUtility = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\InstallUtility::class, ['uninstall'], [], '', false); + $installUtility = $this->getAccessibleMock(InstallUtility::class, ['uninstall'], [], '', false); $installUtility->expects($this->once())->method('uninstall')->with('foobar'); $managementMock->_set('installUtility', $installUtility); $managementMock->_call('uninstallDependenciesToBeUpdated', $downloadQueue); @@ -221,17 +226,17 @@ public function uninstallDependenciesToBeUpdatedCallsUninstall() */ public function uninstallDependenciesToBeUpdatedReturnsResolvedDependencies() { - $managementMock = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Service\ExtensionManagementService::class, [ + $managementMock = $this->getAccessibleMock(ExtensionManagementService::class, [ 'dummy' ]); - $extensionModelMock = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Domain\Model\Extension::class, ['getExtensionKey']); + $extensionModelMock = $this->getAccessibleMock(Extension::class, ['getExtensionKey']); $extensionModelMock->_set('extensionKey', 'foobar'); $extensionModelMock->_set('version', '1.0.0'); $extensionModelMock->expects($this->atLeastOnce())->method('getExtensionKey')->will($this->returnValue('foobar')); $downloadQueue = [ $extensionModelMock ]; - $installUtility = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\InstallUtility::class, ['uninstall'], [], '', false); + $installUtility = $this->getAccessibleMock(InstallUtility::class, ['uninstall'], [], '', false); $managementMock->_set('installUtility', $installUtility); $resolvedDependencies = $managementMock->_call('uninstallDependenciesToBeUpdated', $downloadQueue); $this->assertEquals(['updated' => ['foobar' => $extensionModelMock]], $resolvedDependencies); @@ -243,18 +248,18 @@ public function uninstallDependenciesToBeUpdatedReturnsResolvedDependencies() public function installDependenciesCallsInstall() { $managementMock = $this->getAccessibleMock( - \TYPO3\CMS\Extensionmanager\Service\ExtensionManagementService::class, + ExtensionManagementService::class, ['emitWillInstallExtensionsSignal', 'emitHasInstalledExtensionSignal'] ); - /** @var \TYPO3\CMS\Extensionmanager\Domain\Model\Extension $extensionMock */ - $extensionMock = $this->getMockBuilder(\TYPO3\CMS\Extensionmanager\Domain\Model\Extension::class) + /** @var Extension $extensionMock */ + $extensionMock = $this->getMockBuilder(Extension::class) ->setMethods(['dummy']) ->getMock(); $extensionMock->setExtensionKey('foobar'); $installQueue = [ 'foobar' => $extensionMock, ]; - $installUtility = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\InstallUtility::class, ['install', 'emitWillInstallExtensionsSignal'], [], '', false); + $installUtility = $this->getAccessibleMock(InstallUtility::class, ['install', 'emitWillInstallExtensionsSignal'], [], '', false); $installUtility->expects($this->once())->method('install')->with('foobar'); $managementMock->_set('installUtility', $installUtility); $managementMock->_call('installDependencies', $installQueue); @@ -265,19 +270,19 @@ public function installDependenciesCallsInstall() */ public function installDependenciesReturnsResolvedDependencies() { - $managementMock = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Service\ExtensionManagementService::class, [ + $managementMock = $this->getAccessibleMock(ExtensionManagementService::class, [ 'emitWillInstallExtensionsSignal', 'emitHasInstalledExtensionSignal' ]); - /** @var \TYPO3\CMS\Extensionmanager\Domain\Model\Extension $extensionMock */ - $extensionMock = $this->getMockBuilder(\TYPO3\CMS\Extensionmanager\Domain\Model\Extension::class) + /** @var Extension $extensionMock */ + $extensionMock = $this->getMockBuilder(Extension::class) ->setMethods(['dummy']) ->getMock(); $extensionMock->setExtensionKey('foobar'); $installQueue = [ 'foobar' => $extensionMock, ]; - $installUtility = $this->getAccessibleMock(\TYPO3\CMS\Extensionmanager\Utility\InstallUtility::class, ['install', 'emitWillInstallExtensionsSignal'], [], '', false); + $installUtility = $this->getAccessibleMock(InstallUtility::class, ['install', 'emitWillInstallExtensionsSignal'], [], '', false); $installUtility->expects($this->once())->method('install')->with('foobar'); $managementMock->_set('installUtility', $installUtility); $resolvedDependencies = $managementMock->_call('installDependencies', $installQueue);