Completed
Push — master ( 416b3d...6f6a53 )
by Ingo
23s
created

ModuleManifestTest::testGetResource()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 7
nc 1
nop 0
dl 0
loc 10
rs 9.4285
c 1
b 0
f 0
1
<?php
2
3
4
namespace SilverStripe\Core\Tests\Manifest;
5
6
use SilverStripe\Core\Manifest\ModuleManifest;
7
use SilverStripe\Dev\SapphireTest;
8
9
class ModuleManifestTest extends SapphireTest
10
{
11
    /**
12
     * @var string
13
     */
14
    protected $base;
15
16
    /**
17
     * @var ModuleManifest
18
     */
19
    protected $manifest;
20
21
    protected function setUp()
22
    {
23
        parent::setUp();
24
25
        $this->base = dirname(__FILE__) . '/fixtures/classmanifest';
26
        $this->manifest = new ModuleManifest($this->base, false);
27
    }
28
29
    public function testGetModules()
30
    {
31
        $modules = $this->manifest->getModules();
32
        $this->assertEquals(
33
            [
34
                'module',
35
                'silverstripe/awesome-module',
36
            ],
37
            array_keys($modules)
38
        );
39
    }
40
41
    public function testGetLegacyModule()
42
    {
43
        $module = $this->manifest->getModule('module');
44
        $this->assertNotEmpty($module);
45
        $this->assertEquals('module', $module->getName());
46
        $this->assertEquals('module', $module->getShortName());
47
        $this->assertEquals('module', $module->getRelativePath());
48
        $this->assertEmpty($module->getComposerName());
49
    }
50
51
    public function testGetComposerModule()
52
    {
53
        // Get by installer-name (folder)
54
        $moduleByShortName = $this->manifest->getModule('moduleb');
55
        $this->assertNotEmpty($moduleByShortName);
56
57
        // Can also get this by full composer name
58
        $module = $this->manifest->getModule('silverstripe/awesome-module');
59
        $this->assertNotEmpty($module);
60
        $this->assertEquals($moduleByShortName->getPath(), $module->getPath());
61
62
        // correctly respects vendor
63
        $this->assertEmpty($this->manifest->getModule('wrongvendor/awesome-module'));
64
        $this->assertEmpty($this->manifest->getModule('wrongvendor/moduleb'));
65
66
        // Properties of module
67
        $this->assertEquals('silverstripe/awesome-module', $module->getName());
68
        $this->assertEquals('silverstripe/awesome-module', $module->getComposerName());
69
        $this->assertEquals('moduleb', $module->getShortName());
70
        $this->assertEquals('moduleb', $module->getRelativePath());
71
    }
72
73
    /*
74
     * Note: Tests experimental API
75
     * @internal
76
     */
77
    public function testGetResource()
78
    {
79
        $module = $this->manifest->getModule('moduleb');
80
        $this->assertTrue($module->hasResource('composer.json'));
81
        $this->assertFalse($module->hasResource('package.json'));
82
        $this->assertEquals(
83
            'moduleb/composer.json',
84
            $module->getResourcePath('composer.json')
85
        );
86
    }
87
}
88