diff --git a/src/Service/PlatformDataProvider.php b/src/Service/PlatformDataProvider.php index c45ed44..2d452ac 100644 --- a/src/Service/PlatformDataProvider.php +++ b/src/Service/PlatformDataProvider.php @@ -12,6 +12,7 @@ final class PlatformDataProvider public function __construct( private readonly InstanceService $instanceService, private readonly HttpClientInterface $client, + private readonly VersionFilterService $versionFilterService ) { } @@ -29,6 +30,8 @@ public function getLatestPlatformVersion(): string return version_compare($b, $a); }); + $versions = $this->versionFilterService->removeReleaseCandidates($versions); + return $versions[0]; } } diff --git a/src/Service/VersionFilterService.php b/src/Service/VersionFilterService.php new file mode 100644 index 0000000..3c69f11 --- /dev/null +++ b/src/Service/VersionFilterService.php @@ -0,0 +1,26 @@ + $versions + * @return array + */ + public function removeReleaseCandidates(array $versions): array + { + return array_values( + array_filter( + $versions, + static fn ($version) => ! str_contains(strtolower($version), 'rc') + ) + ); + } +} diff --git a/tests/Service/VersionFilterServiceTest.php b/tests/Service/VersionFilterServiceTest.php new file mode 100644 index 0000000..e3119e5 --- /dev/null +++ b/tests/Service/VersionFilterServiceTest.php @@ -0,0 +1,32 @@ +getFilterVersionService()->removeReleaseCandidates($versions); + static::assertSame($versions, $filteredVersions); + } + + public function testRemoveRCRemovesRCVersions(): void + { + $versions = ['6.4.20.2', '6.5.8.2', '6.6.0.0-rc1']; + + $filteredVersions = $this->getFilterVersionService()->removeReleaseCandidates($versions); + static::assertSame(['6.4.20.2', '6.5.8.2'], $filteredVersions); + } + + private function getFilterVersionService(): VersionFilterService + { + return new VersionFilterService(); + } +}