Completed
Pull Request — master (#76)
by Marco
08:32
created

PickLastMinorVersionFromCollectionTest   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 44
Duplicated Lines 0 %

Importance

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

3 Methods

Rating   Name   Duplication   Size   Complexity  
A testWillRejectEmptyCollection() 0 7 1
A testForRepository() 0 9 1
A lastStableMinorVersionForCollectionProvider() 0 13 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\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
            ['2.2.0', ['1.2.0', '2.2.0', '2.2.0-alpha1', '2.2.1', '1.2.1']],
30
            ['2.2.0', ['1.2.0', '2.2.0-alpha1', '2.2.0', '2.2.1', '1.2.1']],
31
            ['1.2.0', ['1.1.0', '1.1.1', '1.2.0', '1.2.1']],
32
            ['1.2.0', ['1.1.0', '1.1.1', '1.2.0']],
33
            ['1.2.0', ['1.2.0', '1.2.1']],
34
            ['1.2.0', ['1.2.0']],
35
        ];
36
    }
37
38
    /**
39
     * @param string[] $collectionOfVersions
40
     * @dataProvider lastStableMinorVersionForCollectionProvider
41
     */
42
    public function testForRepository(string $expectedVersion, array $collectionOfVersions) : void
43
    {
44
        self::assertSame(
45
            $expectedVersion,
46
            (new PickLastMinorVersionFromCollection())->forVersions(
47
                new VersionsCollection(...array_map(function (string $version) : Version {
48
                    return Version::fromString($version);
49
                }, $collectionOfVersions))
50
            )->getVersionString()
51
        );
52
    }
53
54
    public function testWillRejectEmptyCollection() : void
55
    {
56
        $pick = new PickLastMinorVersionFromCollection();
57
58
        $this->expectException(AssertionFailedException::class);
59
60
        $pick->forVersions(new VersionsCollection());
61
    }
62
}
63