Completed
Pull Request — master (#6733)
by Ingo
12:10 queued 04:21
created

ModuleManifestTest   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 79
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
loc 79
rs 10
c 1
b 0
f 0
wmc 5
lcom 1
cbo 2

5 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 7 1
A testGetModules() 0 11 1
A testGetLegacyModule() 0 9 1
A testGetComposerModule() 0 21 1
A testGetResource() 0 10 1
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