Completed
Pull Request — master (#78)
by Ondřej
06:37
created

PickLastMinorVersionFromCollectionTest   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 36
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 36
rs 10
c 0
b 0
f 0
wmc 3

3 Methods

Rating   Name   Duplication   Size   Complexity  
A testFailsIfNoVersionGiven() 0 5 1
A testForRepository() 0 9 1
A lastStableMinorVersionForCollectionProvider() 0 7 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace RoaveTest\BackwardCompatibility\Git;
6
7
use InvalidArgumentException;
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
            ['1.2.0', ['1.1.0', '1.1.1', '1.2.0', '1.2.1']],
26
            ['1.2.0', ['1.1.0', '1.1.1', '1.2.0']],
27
            ['1.2.0', ['1.2.0', '1.2.1']],
28
            ['1.2.0', ['1.2.0']],
29
        ];
30
    }
31
32
    /**
33
     * @param string[] $collectionOfVersions
34
     * @dataProvider lastStableMinorVersionForCollectionProvider
35
     */
36
    public function testForRepository(string $expectedVersion, array $collectionOfVersions) : void
37
    {
38
        self::assertSame(
39
            $expectedVersion,
40
            (new PickLastMinorVersionFromCollection())->forVersions(
41
                new VersionsCollection(...array_map(function (string $version) : Version {
42
                    return Version::fromString($version);
43
                }, $collectionOfVersions))
44
            )->getVersionString()
45
        );
46
    }
47
48
    public function testFailsIfNoVersionGiven() : void
49
    {
50
        $this->expectException(InvalidArgumentException::class);
51
52
        (new PickLastMinorVersionFromCollection())->forVersions(new VersionsCollection());
53
    }
54
}
55