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