PickLastMinorVersionFromCollectionTest   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 48
Duplicated Lines 0 %

Importance

Changes 5
Bugs 0 Features 1
Metric Value
eloc 22
c 5
b 0
f 1
dl 0
loc 48
rs 10
wmc 3

3 Methods

Rating   Name   Duplication   Size   Complexity  
A testWillRejectEmptyCollection() 0 7 1
A lastStableMinorVersionForCollectionProvider() 0 14 1
A testForRepository() 0 9 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace RoaveTest\BackwardCompatibility\Git;
6
7
use Assert\AssertionFailedException;
8
use PHPUnit\Framework\TestCase;
9
use Roave\BackwardCompatibility\Git\PickLastMinorVersionFromCollection;
10
use Version\Version;
11
use Version\VersionCollection;
12
use function array_map;
13
14
/**
15
 * @covers \Roave\BackwardCompatibility\Git\PickLastMinorVersionFromCollection
16
 */
17
final class PickLastMinorVersionFromCollectionTest extends TestCase
18
{
19
    /**
20
     * @return array<int, array<int, string|array<int, string>>>
21
     *
22
     * @psalm-return array<int, array{0: string, 1: list<string>}>
23
     */
24
    public function lastStableMinorVersionForCollectionProvider() : array
25
    {
26
        return [
27
            ['2.2.0', ['1.1.0', '2.1.1', '2.2.0', '1.2.1']],
28
            ['2.2.0', ['1.1.0', '2.2.1', '2.2.0', '1.2.1']],
29
            ['2.2.0', ['1.2.0', '2.2.1', '2.2.0', '1.2.1']],
30
            ['2.2.0', ['1.2.0', '2.2.0', '2.2.1', '1.2.1']],
31
            ['2.2.0', ['1.2.0', '2.2.0', '2.2.0-alpha1', '2.2.1', '1.2.1']],
32
            ['2.2.0', ['1.2.0', '2.2.0-alpha1', '2.2.0', '2.2.1', '1.2.1']],
33
            ['2.6.0', ['1.1.1', '3.0.0-alpha1', '2.7.0-beta1', '2.6.2', '2.0.0', '2.6.1', '2.6.0']],
34
            ['1.2.0', ['1.1.0', '1.1.1', '1.2.0', '1.2.1']],
35
            ['1.2.0', ['1.1.0', '1.1.1', '1.2.0']],
36
            ['1.2.0', ['1.2.0', '1.2.1']],
37
            ['1.2.0', ['1.2.0']],
38
        ];
39
    }
40
41
    /**
42
     * @param string[] $collectionOfVersions
43
     *
44
     * @dataProvider lastStableMinorVersionForCollectionProvider
45
     */
46
    public function testForRepository(string $expectedVersion, array $collectionOfVersions) : void
47
    {
48
        self::assertSame(
49
            $expectedVersion,
50
            (new PickLastMinorVersionFromCollection())->forVersions(
51
                new VersionCollection(...array_map(static function (string $version) : Version {
52
                    return Version::fromString($version);
53
                }, $collectionOfVersions))
54
            )->toString()
55
        );
56
    }
57
58
    public function testWillRejectEmptyCollection() : void
59
    {
60
        $pick = new PickLastMinorVersionFromCollection();
61
62
        $this->expectException(AssertionFailedException::class);
63
64
        $pick->forVersions(new VersionCollection());
65
    }
66
}
67