ComposerLoaderExtensionStub::getRepository()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 13
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 8
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 13
rs 10
1
<?php
2
3
namespace BringYourOwnIdeas\UpdateChecker\Tests\Stubs;
4
5
use BringYourOwnIdeas\UpdateChecker\Extensions\ComposerLoaderExtension;
6
use Composer\Package\Package;
7
use Composer\Repository\InstalledRepository;
8
use Composer\Repository\InstalledArrayRepository;
9
use Composer\Repository\RepositoryInterface;
10
use SilverStripe\Dev\TestOnly;
11
12
/**
13
 * A partially stubbed version of the {@link ComposerLoaderExtension} extension which doesn't rely on Composer
14
 */
15
class ComposerLoaderExtensionStub extends ComposerLoaderExtension implements TestOnly
16
{
17
    protected function getRepository(): RepositoryInterface
18
    {
19
        $vendorModule = new Package('silverstripe/framework', '4.1.1.0', '4.1.1');
20
        $vendorModule->setType('silverstripe-vendormodule');
21
22
        $silverstripeModule = new Package('silverstripe-themes/simple', '2.1.0.1', '2.1.0');
23
        $silverstripeModule->setType('silverstripe-module');
24
25
        $generalPackage = new Package('something/unrelated', '1.2.3.4', '1.2.3');
26
        $generalPackage->setType('package');
27
28
        return new InstalledRepository([
29
            new InstalledArrayRepository([$vendorModule, $silverstripeModule, $generalPackage])
30
        ]);
31
    }
32
33
    protected function getInstalledConstraint(InstalledRepository $repository, string $packageName): string
34
    {
35
        switch ($packageName) {
36
            case 'silverstripe/framework':
37
                return '4.1.1';
38
            case 'silverstripe-themes/simple':
39
                return '~2.1.0';
40
            case 'something/unrelated':
41
                return '^1.0';
42
            default:
43
                return '';
44
        }
45
    }
46
47
    public function onAfterBuild()
48
    {
49
        // noop - don't load local Composer repository
50
    }
51
}
52