Passed
Pull Request — master (#76)
by Marco
02:48
created

lastStableMinorVersionForCollectionProvider()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 9
nc 1
nop 0
dl 0
loc 11
rs 9.4285
c 0
b 0
f 0
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\VersionsCollection;
12
use function array_map;
13
14
/**
15
 * @covers \Roave\BackwardCompatibility\Git\PickLastMinorVersionFromCollection
16
 */
17
final class PickLastMinorVersionFromCollectionTest extends TestCase
18
{
19
    /**
20
     * @return string[][]|string[][][]
21
     */
22
    public function lastStableMinorVersionForCollectionProvider() : array
23
    {
24
        return [
25
            ['2.2.0', ['1.1.0', '2.1.1', '2.2.0', '1.2.1']],
26
            ['2.2.0', ['1.1.0', '2.2.1', '2.2.0', '1.2.1']],
27
            ['2.2.0', ['1.2.0', '2.2.1', '2.2.0', '1.2.1']],
28
            ['2.2.0', ['1.2.0', '2.2.0', '2.2.1', '1.2.1']],
29
            ['1.2.0', ['1.1.0', '1.1.1', '1.2.0', '1.2.1']],
30
            ['1.2.0', ['1.1.0', '1.1.1', '1.2.0']],
31
            ['1.2.0', ['1.2.0', '1.2.1']],
32
            ['1.2.0', ['1.2.0']],
33
        ];
34
    }
35
36
    /**
37
     * @param string[] $collectionOfVersions
38
     * @dataProvider lastStableMinorVersionForCollectionProvider
39
     */
40
    public function testForRepository(string $expectedVersion, array $collectionOfVersions) : void
41
    {
42
        self::assertSame(
43
            $expectedVersion,
44
            (new PickLastMinorVersionFromCollection())->forVersions(
45
                new VersionsCollection(...array_map(function (string $version) : Version {
46
                    return Version::fromString($version);
47
                }, $collectionOfVersions))
48
            )->getVersionString()
49
        );
50
    }
51
52
    public function testWillRejectEmptyCollection() : void
53
    {
54
        $pick = new PickLastMinorVersionFromCollection();
55
56
        $this->expectException(AssertionFailedException::class);
57
58
        $pick->forVersions(new VersionsCollection());
59
    }
60
}
61