‪TYPO3CMS  ‪main
ExtensionRepositoryTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
20 use PHPUnit\Framework\Attributes\Test;
24 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
25 
26 final class ‪ExtensionRepositoryTest extends UnitTestCase
27 {
28  #[Test]
30  {
31  // foo2 should be kept
32  $foo1 = new ‪Extension();
33  $foo1->setExtensionKey('foo');
34  $foo1->setVersion('1.0.0');
35  $foo2 = new ‪Extension();
36  $foo2->setExtensionKey('foo');
37  $foo2->setVersion('1.0.1');
38 
39  // bar1 should be kept
40  $bar1 = new ‪Extension();
41  $bar1->setExtensionKey('bar');
42  $bar1->setVersion('1.1.2');
43  $bar2 = new ‪Extension();
44  $bar2->setExtensionKey('bar');
45  $bar2->setVersion('1.1.1');
46  $bar3 = new ‪Extension();
47  $bar3->setExtensionKey('bar');
48  $bar3->setVersion('1.0.3');
49 
50  $input = [$foo1, $foo2, $bar1, $bar2, $bar3];
51  $subject = $this->getAccessibleMock(ExtensionRepository::class, null, [], '', false);
52  self::assertEquals(['foo' => $foo2, 'bar' => $bar1], $subject->_call('filterYoungestVersionOfExtensionList', $input, true));
53  }
54 
55  #[Test]
57  {
58  $suitableDependency = ‪Dependency::createFromEmConf('typo3', '3.6.1');
59  $suitableDependencies = new \SplObjectStorage();
60  $suitableDependencies->attach($suitableDependency);
61 
62  $unsuitableDependency = ‪Dependency::createFromEmConf('typo3', '-4.3.0');
63 
64  $unsuitableDependencies = new \SplObjectStorage();
65  $unsuitableDependencies->attach($unsuitableDependency);
66 
67  // foo1 should be kept
68  $foo1 = new ‪Extension();
69  $foo1->setExtensionKey('foo');
70  $foo1->setVersion('1.0.0');
71  $foo1->setDependencies($suitableDependencies);
72 
73  $foo2 = new ‪Extension();
74  $foo2->setExtensionKey('foo');
75  $foo2->setVersion('1.0.1');
76  $foo2->setDependencies($unsuitableDependencies);
77 
78  // bar2 should be kept
79  $bar1 = new ‪Extension();
80  $bar1->setExtensionKey('bar');
81  $bar1->setVersion('1.1.2');
82  $bar1->setDependencies($unsuitableDependencies);
83 
84  $bar2 = new ‪Extension();
85  $bar2->setExtensionKey('bar');
86  $bar2->setVersion('1.1.1');
87  $bar2->setDependencies($suitableDependencies);
88 
89  $input = [$foo1, $foo2, $bar1, $bar2];
90  $subject = $this->getAccessibleMock(ExtensionRepository::class, null, [], '', false);
91  self::assertEquals(['foo' => $foo1, 'bar' => $bar2], $subject->_call('filterYoungestVersionOfExtensionList', $input, false));
92  }
93 
94  #[Test]
96  {
97  $suitableDependency = ‪Dependency::createFromEmConf('typo3', '10.4.0-99.99.99');
98  $suitableDependencies = new \SplObjectStorage();
99  $suitableDependencies->attach($suitableDependency);
100  $suitableExtension = new ‪Extension();
101  $suitableExtension->setExtensionKey('suitable');
102  $suitableExtension->setVersion('1.0.0');
103  $suitableExtension->setDependencies($suitableDependencies);
104 
105  $unsuitableDependency = ‪Dependency::createFromEmConf('typo3', '9.5.0-10.4.99');
106  $unsuitableDependencies = new \SplObjectStorage();
107  $unsuitableDependencies->attach($unsuitableDependency);
108  $unsuitableExtension = new ‪Extension();
109  $unsuitableExtension->setExtensionKey('unsuitable');
110  $unsuitableExtension->setVersion('1.0.0');
111  $unsuitableExtension->setDependencies($unsuitableDependencies);
112 
113  $input = [$suitableExtension, $unsuitableExtension];
114  $subject = $this->getAccessibleMock(ExtensionRepository::class, null, [], '', false);
115 
116  self::assertSame($this->count($subject->_call('getExtensionsSuitableForTypo3Version', $input)), 1);
117  }
118 }
‪TYPO3\CMS\Extensionmanager\Domain\Model\Dependency
Definition: Dependency.php:28
‪TYPO3\CMS\Extensionmanager\Tests\Unit\Domain\Repository
Definition: ExtensionRepositoryTest.php:18
‪TYPO3\CMS\Extensionmanager\Tests\Unit\Domain\Repository\ExtensionRepositoryTest\filterYoungestVersionOfExtensionListFiltersAListToLatestVersion
‪filterYoungestVersionOfExtensionListFiltersAListToLatestVersion()
Definition: ExtensionRepositoryTest.php:29
‪TYPO3\CMS\Extensionmanager\Tests\Unit\Domain\Repository\ExtensionRepositoryTest
Definition: ExtensionRepositoryTest.php:27
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension
Definition: Extension.php:30
‪TYPO3\CMS\Extensionmanager\Tests\Unit\Domain\Repository\ExtensionRepositoryTest\filterYoungestVersionOfExtensionListFiltersAListToLatestVersionWithOnlyCompatibleExtensions
‪filterYoungestVersionOfExtensionListFiltersAListToLatestVersionWithOnlyCompatibleExtensions()
Definition: ExtensionRepositoryTest.php:56
‪TYPO3\CMS\Extensionmanager\Tests\Unit\Domain\Repository\ExtensionRepositoryTest\getExtensionsSuitableForTypo3VersionReturnsOnlySuitableOnes
‪getExtensionsSuitableForTypo3VersionReturnsOnlySuitableOnes()
Definition: ExtensionRepositoryTest.php:95
‪TYPO3\CMS\Extensionmanager\Domain\Repository\ExtensionRepository
Definition: ExtensionRepository.php:37
‪TYPO3\CMS\Extensionmanager\Domain\Model\Dependency\createFromEmConf
‪static createFromEmConf(string $identifier, string $versionConstraint='', string $dependencyType='depends')
Definition: Dependency.php:58