Completed
Pull Request — master (#6750)
by Damian
08:10
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
                'silverstripe/root-module',
35
                'module',
36
                'silverstripe/awesome-module',
37
            ],
38
            array_keys($modules)
39
        );
40
    }
41
42
    public function testGetLegacyModule()
43
    {
44
        $module = $this->manifest->getModule('module');
45
        $this->assertNotEmpty($module);
46
        $this->assertEquals('module', $module->getName());
47
        $this->assertEquals('module', $module->getShortName());
48
        $this->assertEquals('module', $module->getRelativePath());
49
        $this->assertEmpty($module->getComposerName());
50
    }
51
52
    public function testGetComposerModule()
53
    {
54
        // Get by installer-name (folder)
55
        $moduleByShortName = $this->manifest->getModule('moduleb');
56
        $this->assertNotEmpty($moduleByShortName);
57
58
        // Can also get this by full composer name
59
        $module = $this->manifest->getModule('silverstripe/awesome-module');
60
        $this->assertNotEmpty($module);
61
        $this->assertEquals($moduleByShortName->getPath(), $module->getPath());
62
63
        // correctly respects vendor
64
        $this->assertEmpty($this->manifest->getModule('wrongvendor/awesome-module'));
65
        $this->assertEmpty($this->manifest->getModule('wrongvendor/moduleb'));
66
67
        // Properties of module
68
        $this->assertEquals('silverstripe/awesome-module', $module->getName());
69
        $this->assertEquals('silverstripe/awesome-module', $module->getComposerName());
70
        $this->assertEquals('moduleb', $module->getShortName());
71
        $this->assertEquals('moduleb', $module->getRelativePath());
72
    }
73
74
    /*
75
     * Note: Tests experimental API
76
     * @internal
77
     */
78
    public function testGetResourcePath()
79
    {
80
        $module = $this->manifest->getModule('moduleb');
81
        $this->assertTrue($module->hasResource('composer.json'));
82
        $this->assertFalse($module->hasResource('package.json'));
83
        $this->assertEquals(
84
            'moduleb/composer.json',
85
            $module->getResourcePath('composer.json')
86
        );
87
    }
88
89
    /*
90
     * Note: Tests experimental API
91
     * @internal
92
     */
93
    public function testGetResourcePathOnRoot()
94
    {
95
        $module = $this->manifest->getModule('silverstripe/root-module');
96
        $this->assertTrue($module->hasResource('composer.json'));
97
        $this->assertEquals(
98
            'composer.json',
99
            $module->getResourcePath('composer.json')
100
        );
101
    }
102
}
103