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