1<?php
2
3/**
4 * General tests for the description plugin.
5 *
6 * @group plugin_description
7 * @group plugins
8 *
9 * @author Mark C. Prins <mprins@users.sf.net>
10 *
11 * @phpcs:disable Squiz.Classes.ValidClassName.NotCamelCaps
12 * @noinspection AutoloadingIssuesInspection
13 */
14class general_plugin_description_test extends DokuWikiTest
15{
16
17    protected $pluginsEnabled = array('description');
18
19    /**
20     * Simple test to make sure the plugin.info.txt is in correct format
21     */
22    final public function testPluginInfo(): void
23    {
24        $file = __DIR__ . '/../plugin.info.txt';
25        $this->assertFileExists($file);
26
27        $info = confToHash($file);
28
29        $this->assertArrayHasKey('base', $info);
30        $this->assertArrayHasKey('author', $info);
31        $this->assertArrayHasKey('email', $info);
32        $this->assertArrayHasKey('date', $info);
33        $this->assertArrayHasKey('name', $info);
34        $this->assertArrayHasKey('desc', $info);
35        $this->assertArrayHasKey('url', $info);
36
37        $this->assertEquals('description', $info['base']);
38        $this->assertRegExp('/^https?:\/\//', $info['url']);
39        $this->assertTrue(mail_isvalid($info['email']));
40        $this->assertRegExp('/^\d\d\d\d-\d\d-\d\d$/', $info['date']);
41        $this->assertNotFalse(strtotime($info['date']));
42    }
43
44    /**
45     * test if plugin is loaded.
46     */
47    final public function testDescriptionPluginIsLoaded(): void
48    {
49        global $plugin_controller;
50        $this->assertContains(
51            'description',
52            $plugin_controller->getList(),
53            "description plugin is loaded"
54        );
55    }
56
57    /**
58     * test if plugin is loaded.
59     */
60    final public function testSyntaxLoading(): void
61    {
62        $index = plugin_load('syntax', 'description');
63        $this->assertInstanceOf(syntax_plugin_description::class, $index);
64    }
65}
66