1<?php
2
3namespace dokuwiki\plugin\extension\test;
4
5use dokuwiki\plugin\extension\Extension;
6use DokuWikiTest;
7
8/**
9 * Tests for the extension plugin
10 *
11 * @group plugin_extension
12 * @group plugins
13 */
14class ExtensionTest extends DokuWikiTest
15{
16    protected $pluginsEnabled = ['extension'];
17
18    /**
19     * Run checks against the extension plugin itself
20     */
21    public function testSelf()
22    {
23        $extension = Extension::createFromDirectory(__DIR__.'/../');
24
25        $this->assertFalse($extension->isTemplate());
26        $this->assertEquals('plugin', $extension->getType());
27        $this->assertEquals('extension', $extension->getBase());
28        $this->assertEquals('extension', $extension->getId());
29        $this->assertEquals('`extension`', $extension->getId(true));
30        $this->assertEquals(DOKU_INC.'lib/plugins/extension', $extension->getCurrentDir());
31        $this->assertEquals(DOKU_INC.'lib/plugins/extension', $extension->getInstallDir());
32        $this->assertEquals('Extension Manager', $extension->getDisplayName());
33        $this->assertEquals('Andreas Gohr', $extension->getAuthor());
34        $this->assertEquals('andi@splitbrain.org', $extension->getEmail());
35        $this->assertEquals(md5('andi@splitbrain.org'), $extension->getEmailID());
36        $this->assertStringContainsString('plugins', $extension->getDescription());
37        $this->assertEquals('https://www.dokuwiki.org/plugin:extension', $extension->getURL());
38        $this->assertMatchesRegularExpression('/\d\d\d\d-\d\d-\d\d/',$extension->getInstalledVersion());
39        $this->assertContains('Admin', $extension->getComponentTypes());
40        $this->assertIsArray($extension->getDependencyList());
41        $this->assertEmpty($extension->getDependencyList());
42        $this->assertEmpty($extension->getMinimumPHPVersion());
43        $this->assertEmpty($extension->getMaximumPHPVersion());
44        $this->assertTrue($extension->isInstalled());
45        $this->assertFalse($extension->isGitControlled());
46        $this->assertTrue($extension->isBundled());
47        $this->assertFalse($extension->isProtected());
48        $this->assertFalse($extension->isInWrongFolder());
49        $this->assertTrue($extension->isEnabled());
50        $this->assertFalse($extension->hasChangedURL());
51        $this->assertFalse($extension->isUpdateAvailable());
52    }
53
54    /**
55     * Run checks against the dokuwiki template
56     */
57    public function testDokuWikiTemplate()
58    {
59        $extension = Extension::createFromDirectory(__DIR__.'/../../../tpl/dokuwiki/');
60
61        $this->assertTrue($extension->isTemplate());
62        $this->assertEquals('template', $extension->getType());
63        $this->assertEquals('dokuwiki', $extension->getBase());
64        $this->assertEquals('template:dokuwiki', $extension->getId());
65        $this->assertEquals('`template:dokuwiki`', $extension->getId(true));
66        $this->assertEquals(DOKU_INC.'lib/tpl/dokuwiki', $extension->getCurrentDir());
67        $this->assertEquals(DOKU_INC.'lib/tpl/dokuwiki', $extension->getInstallDir());
68        $this->assertEquals('DokuWiki Template', $extension->getDisplayName());
69        $this->assertEquals('Anika Henke', $extension->getAuthor());
70        $this->assertEquals('anika@selfthinker.org', $extension->getEmail());
71        $this->assertEquals(md5('anika@selfthinker.org'), $extension->getEmailID());
72        $this->assertStringContainsString('default template', $extension->getDescription());
73        $this->assertEquals('https://www.dokuwiki.org/template:dokuwiki', $extension->getURL());
74        $this->assertMatchesRegularExpression('/\d\d\d\d-\d\d-\d\d/',$extension->getInstalledVersion());
75        $this->assertContains('Template', $extension->getComponentTypes());
76        $this->assertIsArray($extension->getDependencyList());
77        $this->assertEmpty($extension->getDependencyList());
78        $this->assertEmpty($extension->getMinimumPHPVersion());
79        $this->assertEmpty($extension->getMaximumPHPVersion());
80        $this->assertTrue($extension->isInstalled());
81        $this->assertFalse($extension->isGitControlled());
82        $this->assertTrue($extension->isBundled());
83        $this->assertTrue($extension->isProtected()); // protected because it's the current template
84        $this->assertFalse($extension->isInWrongFolder());
85        $this->assertTrue($extension->isEnabled());
86        $this->assertFalse($extension->hasChangedURL());
87        $this->assertFalse($extension->isUpdateAvailable());
88    }
89}
90