xref: /plugin/annotations/_test/GeneralTest.php (revision 86c7806d6d41bce7c6d00acbee1316c62845cabb)
1da56206cStracker-user<?php
2da56206cStracker-user
3da56206cStracker-usernamespace dokuwiki\plugin\annotations\test;
4da56206cStracker-user
5da56206cStracker-useruse DokuWikiTest;
6da56206cStracker-user
7da56206cStracker-user/**
8da56206cStracker-user * General tests for the annotations plugin
9da56206cStracker-user *
10da56206cStracker-user * @group plugin_annotations
11da56206cStracker-user * @group plugins
12da56206cStracker-user */
13da56206cStracker-userclass GeneralTest extends DokuWikiTest
14da56206cStracker-user{
15da56206cStracker-user    /**
16da56206cStracker-user     * Make sure plugin.info.txt is present and well-formed.
17da56206cStracker-user     */
18da56206cStracker-user    public function testPluginInfo(): void
19da56206cStracker-user    {
20da56206cStracker-user        $file = __DIR__ . '/../plugin.info.txt';
21da56206cStracker-user        $this->assertFileExists($file);
22da56206cStracker-user
23da56206cStracker-user        $info = confToHash($file);
24da56206cStracker-user
25da56206cStracker-user        $this->assertArrayHasKey('base', $info);
26da56206cStracker-user        $this->assertArrayHasKey('author', $info);
27da56206cStracker-user        $this->assertArrayHasKey('date', $info);
28da56206cStracker-user        $this->assertArrayHasKey('name', $info);
29da56206cStracker-user        $this->assertArrayHasKey('desc', $info);
30da56206cStracker-user        $this->assertArrayHasKey('url', $info);
31da56206cStracker-user
32da56206cStracker-user        $this->assertEquals('annotations', $info['base']);
33da56206cStracker-user        $this->assertMatchesRegularExpression('/^https?:\/\//', $info['url']);
34da56206cStracker-user        $this->assertMatchesRegularExpression('/^\d\d\d\d-\d\d-\d\d$/', $info['date']);
35da56206cStracker-user        $this->assertTrue(false !== strtotime($info['date']));
36da56206cStracker-user    }
37da56206cStracker-user
38da56206cStracker-user    /**
39da56206cStracker-user     * Every $conf entry in conf/default.php must have a matching $meta entry in
40*86c7806dStracker-user     * conf/metadata.php (and vice versa).
41da56206cStracker-user     */
42da56206cStracker-user    public function testPluginConf(): void
43da56206cStracker-user    {
44da56206cStracker-user        $conf_file = __DIR__ . '/../conf/default.php';
45da56206cStracker-user        $meta_file = __DIR__ . '/../conf/metadata.php';
46da56206cStracker-user
47da56206cStracker-user        if (!file_exists($conf_file) && !file_exists($meta_file)) {
48da56206cStracker-user            self::markTestSkipped('No config files exist -> skipping test');
49da56206cStracker-user        }
50da56206cStracker-user
51da56206cStracker-user        if (file_exists($conf_file)) {
52da56206cStracker-user            include($conf_file);
53da56206cStracker-user        }
54da56206cStracker-user        if (file_exists($meta_file)) {
55da56206cStracker-user            include($meta_file);
56da56206cStracker-user        }
57da56206cStracker-user
58da56206cStracker-user        $this->assertEquals(
59da56206cStracker-user            gettype($conf),
60da56206cStracker-user            gettype($meta),
61da56206cStracker-user            'Both conf/default.php and conf/metadata.php have to exist and contain the same keys.'
62da56206cStracker-user        );
63da56206cStracker-user
64da56206cStracker-user        if ($conf !== null && $meta !== null) {
65da56206cStracker-user            foreach ($conf as $key => $value) {
66da56206cStracker-user                $this->assertArrayHasKey($key, $meta, 'Key $meta[\'' . $key . '\'] missing in conf/metadata.php');
67da56206cStracker-user            }
68da56206cStracker-user            foreach ($meta as $key => $value) {
69da56206cStracker-user                $this->assertArrayHasKey($key, $conf, 'Key $conf[\'' . $key . '\'] missing in conf/default.php');
70da56206cStracker-user            }
71da56206cStracker-user        }
72da56206cStracker-user    }
73da56206cStracker-user}
74