2 declare(strict_types = 1);
25 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
37 $managementMock = $this->getAccessibleMock(
38 ExtensionManagementService::class,
39 [
'downloadDependencies',
'uninstallDependenciesToBeUpdated',
'setInExtensionRepository',
'downloadMainExtension',
'isAutomaticInstallationEnabled']
41 $managementMock->expects($this->any())->method(
'downloadMainExtension')->will($this->returnValue([]));
42 $managementMock->expects($this->any())->method(
'isAutomaticInstallationEnabled')->will($this->returnValue([
false]));
43 $extensionModelMock = $this->getAccessibleMock(Extension::class);
44 $extensionModelMock->_set(
'extensionKey',
'foobar');
45 $extensionModelMock->_set(
'version',
'1.0.0');
46 $dependencyUtilityMock = $this->getAccessibleMock(DependencyUtility::class, [
'checkDependencies']);
47 $dependencyUtilityMock->expects($this->atLeastOnce())->method(
'checkDependencies');
48 $managementMock->_set(
'dependencyUtility', $dependencyUtilityMock);
49 $downloadQueueMock = $this->getAccessibleMock(DownloadQueue::class, [
'isCopyQueueEmpty',
'isQueueEmpty',
'resetExtensionQueue',
'addExtensionToInstallQueue']);
50 $downloadQueueMock->expects($this->any())->method(
'isCopyQueueEmpty')->willReturn(
true);
51 $downloadQueueMock->expects($this->at(1))->method(
'isQueueEmpty')->with(
'download')->willReturn(
false);
52 $downloadQueueMock->expects($this->at(4))->method(
'isQueueEmpty')->with(
'download')->willReturn(
true);
53 $downloadQueueMock->expects($this->at(5))->method(
'isQueueEmpty')->with(
'update')->willReturn(
true);
54 $downloadQueueMock->expects($this->atLeastOnce())->method(
'resetExtensionQueue')->will($this->returnValue([
56 'foo' => $extensionModelMock
59 $managementMock->_set(
'downloadQueue', $downloadQueueMock);
60 $managementMock->expects($this->once())->method(
'downloadDependencies')->with([
'foo' => $extensionModelMock])->will($this->returnValue([]));
61 $managementMock->_call(
'installExtension', $extensionModelMock);
69 $managementMock = $this->getAccessibleMock(
70 ExtensionManagementService::class,
71 [
'downloadDependencies',
'uninstallDependenciesToBeUpdated',
'setInExtensionRepository',
'downloadMainExtension',
'isAutomaticInstallationEnabled']
73 $managementMock->expects($this->any())->method(
'downloadMainExtension')->will($this->returnValue([]));
74 $managementMock->expects($this->any())->method(
'isAutomaticInstallationEnabled')->will($this->returnValue(
true));
75 $extensionModelMock = $this->getAccessibleMock(Extension::class);
76 $extensionModelMock->_set(
'extensionKey',
'foobar');
77 $extensionModelMock->_set(
'version',
'1.0.0');
78 $dependencyUtilityMock = $this->getAccessibleMock(DependencyUtility::class, [
'checkDependencies']);
79 $dependencyUtilityMock->expects($this->atLeastOnce())->method(
'checkDependencies');
80 $managementMock->_set(
'dependencyUtility', $dependencyUtilityMock);
81 $downloadQueueMock = $this->getAccessibleMock(DownloadQueue::class, [
'isCopyQueueEmpty',
'isQueueEmpty',
'resetExtensionQueue',
'addExtensionToInstallQueue']);
82 $downloadQueueMock->expects($this->any())->method(
'isCopyQueueEmpty')->willReturn(
true);
83 $downloadQueueMock->expects($this->at(1))->method(
'isQueueEmpty')->with(
'download')->willReturn(
false);
84 $downloadQueueMock->expects($this->at(4))->method(
'isQueueEmpty')->with(
'download')->willReturn(
true);
85 $downloadQueueMock->expects($this->at(5))->method(
'isQueueEmpty')->with(
'update')->willReturn(
true);
86 $downloadQueueMock->expects($this->atLeastOnce())->method(
'resetExtensionQueue')->will($this->returnValue([
88 'foo' => $extensionModelMock
91 $managementMock->_set(
'downloadQueue', $downloadQueueMock);
92 $managementMock->expects($this->once())->method(
'downloadDependencies')->with([
'foo' => $extensionModelMock])->will($this->returnValue([]));
93 $managementMock->expects($this->once())->method(
'uninstallDependenciesToBeUpdated')->with([
'foo' => $extensionModelMock])->will($this->returnValue([]));
94 $managementMock->_call(
'installExtension', $extensionModelMock);
102 $managementMock = $this->getAccessibleMock(ExtensionManagementService::class, [
106 $extensionModelMock = $this->getAccessibleMock(Extension::class, [
'getExtensionKey']);
107 $extensionModelMock->_set(
'extensionKey',
'foobar');
108 $extensionModelMock->_set(
'version',
'1.0.0');
110 $dependencyUtilityMock = $this->getAccessibleMock(DependencyUtility::class);
111 $dependencyUtilityMock->expects($this->atLeastOnce())->method(
'checkDependencies');
112 $installUtilityMock = $this->getMockBuilder(InstallUtility::class)->getMock();
113 $installUtilityMock->expects($this->any())->method(
'enrichExtensionWithDetails')->will($this->returnValue([]));
114 $extensionModelUtilityMock = $this->getMockBuilder(ExtensionModelUtility::class)->getMock();
115 $extensionModelUtilityMock->expects($this->any())->method(
'mapExtensionArrayToModel')->will($this->returnValue($extensionModelMock));
116 $managementMock->_set(
'dependencyUtility', $dependencyUtilityMock);
117 $managementMock->_set(
'installUtility', $installUtilityMock);
118 $managementMock->_set(
'extensionModelUtility', $extensionModelUtilityMock);
123 $downloadQueueMock = $this->getAccessibleMock(DownloadQueue::class, [
'removeExtensionFromQueue',
'addExtensionToInstallQueue']);
124 $downloadUtilityMock = $this->getAccessibleMock(DownloadUtility::class, [
'download']);
125 $downloadUtilityMock->expects($this->once())->method(
'download')->with($extensionModelMock);
126 $managementMock->_set(
'downloadUtility', $downloadUtilityMock);
127 $managementMock->_set(
'downloadQueue', $downloadQueueMock);
128 $managementMock->_call(
'downloadDependencies', $downloadQueue);
136 $managementMock = $this->getAccessibleMock(ExtensionManagementService::class, [
141 $extensionModelMock = $this->getMockBuilder(Extension::class)
142 ->setMethods([
'getExtensionKey'])
144 $extensionModelMock->setExtensionKey(
'foobar');
145 $extensionModelMock->setVersion(
'1.0.0');
150 $dependencyUtilityMock = $this->getAccessibleMock(DependencyUtility::class);
151 $dependencyUtilityMock->expects($this->atLeastOnce())->method(
'checkDependencies');
152 $installUtilityMock = $this->getMockBuilder(InstallUtility::class)->getMock();
153 $installUtilityMock->expects($this->any())->method(
'enrichExtensionWithDetails')->will($this->returnValue([]));
154 $extensionModelUtilityMock = $this->getMockBuilder(ExtensionModelUtility::class)->getMock();
155 $extensionModelUtilityMock->expects($this->any())->method(
'mapExtensionArrayToModel')->will($this->returnValue($extensionModelMock));
156 $managementMock->_set(
'dependencyUtility', $dependencyUtilityMock);
157 $managementMock->_set(
'installUtility', $installUtilityMock);
158 $managementMock->_set(
'extensionModelUtility', $extensionModelUtilityMock);
160 $downloadQueueMock = $this->getAccessibleMock(DownloadQueue::class, [
'removeExtensionFromQueue',
'addExtensionToInstallQueue']);
161 $downloadUtilityMock = $this->getAccessibleMock(DownloadUtility::class, [
'download']);
162 $downloadQueueMock->expects($this->once())->method(
'removeExtensionFromQueue')->with($extensionModelMock);
163 $managementMock->_set(
'downloadUtility', $downloadUtilityMock);
164 $managementMock->_set(
'downloadQueue', $downloadQueueMock);
165 $managementMock->_call(
'downloadDependencies', $downloadQueue);
173 $managementMock = $this->getAccessibleMock(ExtensionManagementService::class, [
177 $extensionModelMock = $this->getAccessibleMock(Extension::class, [
'getExtensionKey']);
178 $extensionModelMock->_set(
'extensionKey',
'foobar');
179 $extensionModelMock->_set(
'version',
'1.0.0');
184 $dependencyUtilityMock = $this->getAccessibleMock(DependencyUtility::class);
185 $dependencyUtilityMock->expects($this->atLeastOnce())->method(
'checkDependencies');
186 $installUtilityMock = $this->getMockBuilder(InstallUtility::class)->getMock();
187 $installUtilityMock->expects($this->any())->method(
'enrichExtensionWithDetails')->will($this->returnValue([]));
188 $extensionModelUtilityMock = $this->getMockBuilder(ExtensionModelUtility::class)->getMock();
189 $extensionModelUtilityMock->expects($this->any())->method(
'mapExtensionArrayToModel')->will($this->returnValue($extensionModelMock));
190 $managementMock->_set(
'dependencyUtility', $dependencyUtilityMock);
191 $managementMock->_set(
'installUtility', $installUtilityMock);
192 $managementMock->_set(
'extensionModelUtility', $extensionModelUtilityMock);
194 $downloadQueueMock = $this->getAccessibleMock(DownloadQueue::class, [
'removeExtensionFromQueue',
'addExtensionToInstallQueue']);
195 $downloadUtilityMock = $this->getAccessibleMock(DownloadUtility::class, [
'download']);
196 $extensionModelMock->expects($this->atLeastOnce())->method(
'getExtensionKey')->will($this->returnValue(
'foobar'));
197 $managementMock->_set(
'downloadUtility', $downloadUtilityMock);
198 $managementMock->_set(
'downloadQueue', $downloadQueueMock);
199 $resolvedDependencies = $managementMock->_call(
'downloadDependencies', $downloadQueue);
200 $this->assertEquals([
'downloaded' => [
'foobar' => $extensionModelMock]], $resolvedDependencies);
208 $managementMock = $this->getAccessibleMock(ExtensionManagementService::class, [
211 $extensionModelMock = $this->getAccessibleMock(Extension::class, [
'getExtensionKey']);
212 $extensionModelMock->_set(
'extensionKey',
'foobar');
213 $extensionModelMock->_set(
'version',
'1.0.0');
214 $extensionModelMock->expects($this->atLeastOnce())->method(
'getExtensionKey')->will($this->returnValue(
'foobar'));
218 $installUtility = $this->getAccessibleMock(InstallUtility::class, [
'uninstall'], [],
'',
false);
219 $installUtility->expects($this->once())->method(
'uninstall')->with(
'foobar');
220 $managementMock->_set(
'installUtility', $installUtility);
221 $managementMock->_call(
'uninstallDependenciesToBeUpdated', $downloadQueue);
229 $managementMock = $this->getAccessibleMock(ExtensionManagementService::class, [
232 $extensionModelMock = $this->getAccessibleMock(Extension::class, [
'getExtensionKey']);
233 $extensionModelMock->_set(
'extensionKey',
'foobar');
234 $extensionModelMock->_set(
'version',
'1.0.0');
235 $extensionModelMock->expects($this->atLeastOnce())->method(
'getExtensionKey')->will($this->returnValue(
'foobar'));
239 $installUtility = $this->getAccessibleMock(InstallUtility::class, [
'uninstall'], [],
'',
false);
240 $managementMock->_set(
'installUtility', $installUtility);
241 $resolvedDependencies = $managementMock->_call(
'uninstallDependenciesToBeUpdated', $downloadQueue);
242 $this->assertEquals([
'updated' => [
'foobar' => $extensionModelMock]], $resolvedDependencies);
250 $managementMock = $this->getAccessibleMock(
251 ExtensionManagementService::class,
252 [
'emitWillInstallExtensionsSignal',
'emitHasInstalledExtensionSignal']
255 $extensionMock = $this->getMockBuilder(Extension::class)
256 ->setMethods([
'dummy'])
258 $extensionMock->setExtensionKey(
'foobar');
260 'foobar' => $extensionMock,
262 $installUtility = $this->getAccessibleMock(InstallUtility::class, [
'install',
'emitWillInstallExtensionsSignal'], [],
'',
false);
263 $installUtility->expects($this->once())->method(
'install')->with(
'foobar');
264 $managementMock->_set(
'installUtility', $installUtility);
265 $managementMock->_call(
'installDependencies', $installQueue);
273 $managementMock = $this->getAccessibleMock(ExtensionManagementService::class, [
274 'emitWillInstallExtensionsSignal',
275 'emitHasInstalledExtensionSignal'
278 $extensionMock = $this->getMockBuilder(Extension::class)
279 ->setMethods([
'dummy'])
281 $extensionMock->setExtensionKey(
'foobar');
283 'foobar' => $extensionMock,
285 $installUtility = $this->getAccessibleMock(InstallUtility::class, [
'install',
'emitWillInstallExtensionsSignal'], [],
'',
false);
286 $installUtility->expects($this->once())->method(
'install')->with(
'foobar');
287 $managementMock->_set(
'installUtility', $installUtility);
288 $resolvedDependencies = $managementMock->_call(
'installDependencies', $installQueue);
289 $this->assertEquals([
293 ], $resolvedDependencies);