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