1*5e5975cdSMichael Große<?php 2*5e5975cdSMichael Große 3*5e5975cdSMichael Großedeclare(strict_types=1); 4*5e5975cdSMichael Große 5*5e5975cdSMichael Großenamespace dokuwiki\plugin\today\test; 6*5e5975cdSMichael Große 7*5e5975cdSMichael Großeuse DokuWikiTest; 8*5e5975cdSMichael Große 9*5e5975cdSMichael Große/** 10*5e5975cdSMichael Große * General tests for the today plugin 11*5e5975cdSMichael Große * 12*5e5975cdSMichael Große * @group plugin_today 13*5e5975cdSMichael Große * @group plugins 14*5e5975cdSMichael Große */ 15*5e5975cdSMichael Großefinal class GeneralTest extends DokuWikiTest 16*5e5975cdSMichael Große{ 17*5e5975cdSMichael Große 18*5e5975cdSMichael Große /** 19*5e5975cdSMichael Große * Simple test to make sure the plugin.info.txt is in correct format 20*5e5975cdSMichael Große */ 21*5e5975cdSMichael Große public function testPluginInfo(): void 22*5e5975cdSMichael Große { 23*5e5975cdSMichael Große $file = __DIR__ . '/../plugin.info.txt'; 24*5e5975cdSMichael Große self::assertFileExists($file); 25*5e5975cdSMichael Große 26*5e5975cdSMichael Große $info = confToHash($file); 27*5e5975cdSMichael Große 28*5e5975cdSMichael Große self::assertArrayHasKey('base', $info); 29*5e5975cdSMichael Große self::assertArrayHasKey('author', $info); 30*5e5975cdSMichael Große self::assertArrayHasKey('email', $info); 31*5e5975cdSMichael Große self::assertArrayHasKey('date', $info); 32*5e5975cdSMichael Große self::assertArrayHasKey('name', $info); 33*5e5975cdSMichael Große self::assertArrayHasKey('desc', $info); 34*5e5975cdSMichael Große self::assertArrayHasKey('url', $info); 35*5e5975cdSMichael Große 36*5e5975cdSMichael Große self::assertEquals('today', $info[ 'base' ]); 37*5e5975cdSMichael Große self::assertRegExp('/^https?:\/\//', $info[ 'url' ]); 38*5e5975cdSMichael Große self::assertTrue(mail_isvalid($info[ 'email' ])); 39*5e5975cdSMichael Große self::assertRegExp('/^\d\d\d\d-\d\d-\d\d$/', $info[ 'date' ]); 40*5e5975cdSMichael Große self::assertTrue(false !== strtotime($info[ 'date' ])); 41*5e5975cdSMichael Große } 42*5e5975cdSMichael Große 43*5e5975cdSMichael Große /** 44*5e5975cdSMichael Große * Test to ensure that every conf['...'] entry in conf/default.php has a corresponding meta['...'] entry in 45*5e5975cdSMichael Große * conf/metadata.php. 46*5e5975cdSMichael Große */ 47*5e5975cdSMichael Große public function testPluginConf(): void 48*5e5975cdSMichael Große { 49*5e5975cdSMichael Große $conf_file = __DIR__ . '/../conf/default.php'; 50*5e5975cdSMichael Große $meta_file = __DIR__ . '/../conf/metadata.php'; 51*5e5975cdSMichael Große 52*5e5975cdSMichael Große if (!file_exists($conf_file) && !file_exists($meta_file)) { 53*5e5975cdSMichael Große self::markTestSkipped('No config files exist -> skipping test'); 54*5e5975cdSMichael Große } 55*5e5975cdSMichael Große 56*5e5975cdSMichael Große if (file_exists($conf_file)) { 57*5e5975cdSMichael Große include($conf_file); 58*5e5975cdSMichael Große } 59*5e5975cdSMichael Große if (file_exists($meta_file)) { 60*5e5975cdSMichael Große include($meta_file); 61*5e5975cdSMichael Große } 62*5e5975cdSMichael Große 63*5e5975cdSMichael Große self::assertEquals( 64*5e5975cdSMichael Große gettype($conf), 65*5e5975cdSMichael Große gettype($meta), 66*5e5975cdSMichael Große 'Both ' . DOKU_PLUGIN . 'today/conf/default.php and ' . DOKU_PLUGIN . 'today/conf/metadata.php have to exist and contain the same keys.' 67*5e5975cdSMichael Große ); 68*5e5975cdSMichael Große 69*5e5975cdSMichael Große if ($conf !== null && $meta !== null) { 70*5e5975cdSMichael Große foreach ($conf as $key => $value) { 71*5e5975cdSMichael Große self::assertArrayHasKey( 72*5e5975cdSMichael Große $key, 73*5e5975cdSMichael Große $meta, 74*5e5975cdSMichael Große 'Key $meta[\'' . $key . '\'] missing in ' . DOKU_PLUGIN . 'today/conf/metadata.php' 75*5e5975cdSMichael Große ); 76*5e5975cdSMichael Große } 77*5e5975cdSMichael Große 78*5e5975cdSMichael Große foreach ($meta as $key => $value) { 79*5e5975cdSMichael Große self::assertArrayHasKey( 80*5e5975cdSMichael Große $key, 81*5e5975cdSMichael Große $conf, 82*5e5975cdSMichael Große 'Key $conf[\'' . $key . '\'] missing in ' . DOKU_PLUGIN . 'today/conf/default.php' 83*5e5975cdSMichael Große ); 84*5e5975cdSMichael Große } 85*5e5975cdSMichael Große } 86*5e5975cdSMichael Große } 87*5e5975cdSMichael Große} 88