Completed
Push — master ( 55accb...6b95b9 )
by
unknown
17:55
created

UpdateCheckerTest::testCheckForUpdates()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 22
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 22
rs 9.2
c 0
b 0
f 0
cc 1
eloc 14
nc 1
nop 0
1
<?php
2
3
namespace BringYourOwnIdeas\UpdateChecker\Tests;
4
5
use BringYourOwnIdeas\Maintenance\Util\ComposerLoader;
6
use BringYourOwnIdeas\UpdateChecker\UpdateChecker;
7
use Composer\Composer;
8
use Injector;
9
use PHPUnit_Framework_TestCase;
10
use SapphireTest;
11
12
/**
13
 * @mixin PHPUnit_Framework_TestCase
14
 */
15
class UpdateCheckerTest extends SapphireTest
16
{
17
    protected $usesDatabase = true;
18
19
    protected $updateChecker;
20
21
    public function setUp()
22
    {
23
        parent::setUp();
24
25
        // Mock composer and composer loader
26
        $composer = $this->getMock(Composer::Class);
27
        $composerLoader = $this->getMockBuilder(ComposerLoader::class)
28
            ->setMethods(['getComposer'])
29
            ->getMock();
30
        $composerLoader->expects($this->once())->method('getComposer')->will($this->returnValue($composer));
31
        Injector::inst()->registerService($composerLoader, ComposerLoader::class);
32
33
        // Partially mock UpdateChecker
34
        $this->updateChecker = $this->getMockBuilder(UpdateChecker::class)
35
            ->setMethods(['findLatestPackage'])
36
            ->getMock();
37
    }
38
39
    public function testCheckForUpdates()
40
    {
41
        $mockPackage = new \Composer\Package\Package('foo/bar', '2.3.4.0', '2.3.4');
42
        $mockPackage->setSourceReference('foobar123');
43
44
        // No available update
45
        $this->updateChecker->expects($this->at(0))
46
            ->method('findLatestPackage')
47
            ->will($this->returnValue(false));
48
49
        // There is latest version though
50
        $this->updateChecker->expects($this->at(1))
51
            ->method('findLatestPackage')
52
            ->will($this->returnValue($mockPackage));
53
54
55
        $result = $this->updateChecker->checkForUpdates($mockPackage, '~1.2.0');
56
        $this->assertArrayNotHasKey('AvailableVersion', $result, 'No available update is recorded');
57
        $this->assertArrayNotHasKey('AvailableHash', $result, 'No available update is recorded');
58
        $this->assertSame('2.3.4', $result['LatestVersion'], 'Latest version is returned');
59
        $this->assertSame('foobar123', $result['LatestHash'], 'Hash of latest version is returned');
60
    }
61
}
62