xref: /plugin/today/_test/GeneralTest.php (revision 1cfa218981e5383cf0eb441b8eb8dd8c48703487)
15e5975cdSMichael Große<?php
25e5975cdSMichael Große
35e5975cdSMichael Großedeclare(strict_types=1);
45e5975cdSMichael Große
55e5975cdSMichael Großenamespace dokuwiki\plugin\today\test;
65e5975cdSMichael Große
75e5975cdSMichael Großeuse DokuWikiTest;
85e5975cdSMichael Große
95e5975cdSMichael Große/**
105e5975cdSMichael Große * General tests for the today plugin
115e5975cdSMichael Große *
125e5975cdSMichael Große * @group plugin_today
135e5975cdSMichael Große * @group plugins
145e5975cdSMichael Große */
155e5975cdSMichael Großefinal class GeneralTest extends DokuWikiTest
165e5975cdSMichael Große{
175e5975cdSMichael Große
185e5975cdSMichael Große    /**
195e5975cdSMichael Große     * Simple test to make sure the plugin.info.txt is in correct format
205e5975cdSMichael Große     */
215e5975cdSMichael Große    public function testPluginInfo(): void
225e5975cdSMichael Große    {
235e5975cdSMichael Große        $file = __DIR__ . '/../plugin.info.txt';
245e5975cdSMichael Große        self::assertFileExists($file);
255e5975cdSMichael Große
265e5975cdSMichael Große        $info = confToHash($file);
275e5975cdSMichael Große
285e5975cdSMichael Große        self::assertArrayHasKey('base', $info);
295e5975cdSMichael Große        self::assertArrayHasKey('author', $info);
305e5975cdSMichael Große        self::assertArrayHasKey('email', $info);
315e5975cdSMichael Große        self::assertArrayHasKey('date', $info);
325e5975cdSMichael Große        self::assertArrayHasKey('name', $info);
335e5975cdSMichael Große        self::assertArrayHasKey('desc', $info);
345e5975cdSMichael Große        self::assertArrayHasKey('url', $info);
355e5975cdSMichael Große
365e5975cdSMichael Große        self::assertEquals('today', $info[ 'base' ]);
37*1cfa2189SMichael Große        self::assertMatchesRegularExpression('/^https?:\/\//', $info[ 'url' ]);
385e5975cdSMichael Große        self::assertTrue(mail_isvalid($info[ 'email' ]));
39*1cfa2189SMichael Große        self::assertMatchesRegularExpression('/^\d\d\d\d-\d\d-\d\d$/', $info[ 'date' ]);
405e5975cdSMichael Große        self::assertTrue(false !== strtotime($info[ 'date' ]));
415e5975cdSMichael Große    }
425e5975cdSMichael Große
435e5975cdSMichael Große    /**
445e5975cdSMichael Große     * Test to ensure that every conf['...'] entry in conf/default.php has a corresponding meta['...'] entry in
455e5975cdSMichael Große     * conf/metadata.php.
465e5975cdSMichael Große     */
475e5975cdSMichael Große    public function testPluginConf(): void
485e5975cdSMichael Große    {
495e5975cdSMichael Große        $conf_file = __DIR__ . '/../conf/default.php';
505e5975cdSMichael Große        $meta_file = __DIR__ . '/../conf/metadata.php';
515e5975cdSMichael Große
525e5975cdSMichael Große        if (!file_exists($conf_file) && !file_exists($meta_file)) {
535e5975cdSMichael Große            self::markTestSkipped('No config files exist -> skipping test');
545e5975cdSMichael Große        }
555e5975cdSMichael Große
565e5975cdSMichael Große        if (file_exists($conf_file)) {
575e5975cdSMichael Große            include($conf_file);
585e5975cdSMichael Große        }
595e5975cdSMichael Große        if (file_exists($meta_file)) {
605e5975cdSMichael Große            include($meta_file);
615e5975cdSMichael Große        }
625e5975cdSMichael Große
635e5975cdSMichael Große        self::assertEquals(
645e5975cdSMichael Große            gettype($conf),
655e5975cdSMichael Große            gettype($meta),
665e5975cdSMichael Große            'Both ' . DOKU_PLUGIN . 'today/conf/default.php and ' . DOKU_PLUGIN . 'today/conf/metadata.php have to exist and contain the same keys.'
675e5975cdSMichael Große        );
685e5975cdSMichael Große
695e5975cdSMichael Große        if ($conf !== null && $meta !== null) {
705e5975cdSMichael Große            foreach ($conf as $key => $value) {
715e5975cdSMichael Große                self::assertArrayHasKey(
725e5975cdSMichael Große                    $key,
735e5975cdSMichael Große                    $meta,
745e5975cdSMichael Große                    'Key $meta[\'' . $key . '\'] missing in ' . DOKU_PLUGIN . 'today/conf/metadata.php'
755e5975cdSMichael Große                );
765e5975cdSMichael Große            }
775e5975cdSMichael Große
785e5975cdSMichael Große            foreach ($meta as $key => $value) {
795e5975cdSMichael Große                self::assertArrayHasKey(
805e5975cdSMichael Große                    $key,
815e5975cdSMichael Große                    $conf,
825e5975cdSMichael Große                    'Key $conf[\'' . $key . '\'] missing in ' . DOKU_PLUGIN . 'today/conf/default.php'
835e5975cdSMichael Große                );
845e5975cdSMichael Große            }
855e5975cdSMichael Große        }
865e5975cdSMichael Große    }
875e5975cdSMichael Große}
88