1*206668c3SJames Collins<?php 2*206668c3SJames Collins 3*206668c3SJames Collinsnamespace dokuwiki\tpl\mikio\test; 4*206668c3SJames Collins 5*206668c3SJames Collinsuse dokuwiki\template\mikio\mikio; 6*206668c3SJames Collinsuse DokuWikiTest; 7*206668c3SJames Collins 8*206668c3SJames Collins/** 9*206668c3SJames Collins * General tests for the advanced plugin 10*206668c3SJames Collins * 11*206668c3SJames Collins * @group tpl_bootstrap3 12*206668c3SJames Collins * @group plugins 13*206668c3SJames Collins */ 14*206668c3SJames Collinsclass general_tpl_mikio_test extends DokuWikiTest 15*206668c3SJames Collins{ 16*206668c3SJames Collins 17*206668c3SJames Collins /** 18*206668c3SJames Collins * Simple test to make sure the template.info.txt is in correct format 19*206668c3SJames Collins */ 20*206668c3SJames Collins public function test_templateinfo() 21*206668c3SJames Collins { 22*206668c3SJames Collins $file = __DIR__ . '/../template.info.txt'; 23*206668c3SJames Collins $this->assertFileExists($file); 24*206668c3SJames Collins 25*206668c3SJames Collins $info = confToHash($file); 26*206668c3SJames Collins 27*206668c3SJames Collins $this->assertArrayHasKey('base', $info); 28*206668c3SJames Collins $this->assertArrayHasKey('author', $info); 29*206668c3SJames Collins $this->assertArrayHasKey('email', $info); 30*206668c3SJames Collins $this->assertArrayHasKey('date', $info); 31*206668c3SJames Collins $this->assertArrayHasKey('name', $info); 32*206668c3SJames Collins $this->assertArrayHasKey('desc', $info); 33*206668c3SJames Collins $this->assertArrayHasKey('url', $info); 34*206668c3SJames Collins 35*206668c3SJames Collins $this->assertEquals('mikio', $info['base']); 36*206668c3SJames Collins $this->assertRegExp('/^https?:\/\//', $info['url']); 37*206668c3SJames Collins $this->assertTrue(mail_isvalid($info['email'])); 38*206668c3SJames Collins $this->assertRegExp('/^\d\d\d\d-\d\d-\d\d$/', $info['date']); 39*206668c3SJames Collins $this->assertTrue(false !== strtotime($info['date'])); 40*206668c3SJames Collins } 41*206668c3SJames Collins 42*206668c3SJames Collins/** 43*206668c3SJames Collins * Test to ensure that every conf['...'] entry in conf/default.php has a corresponding meta['...'] entry in 44*206668c3SJames Collins * conf/metadata.php. 45*206668c3SJames Collins */ 46*206668c3SJames Collins public function test_tpl_conf() 47*206668c3SJames Collins { 48*206668c3SJames Collins $conf_file = __DIR__ . '/../conf/default.php'; 49*206668c3SJames Collins 50*206668c3SJames Collins if (file_exists($conf_file)) { 51*206668c3SJames Collins include $conf_file; 52*206668c3SJames Collins } 53*206668c3SJames Collins 54*206668c3SJames Collins $meta_file = __DIR__ . '/../conf/metadata.php'; 55*206668c3SJames Collins 56*206668c3SJames Collins if (file_exists($meta_file)) { 57*206668c3SJames Collins include $meta_file; 58*206668c3SJames Collins } 59*206668c3SJames Collins 60*206668c3SJames Collins $this->assertEquals( 61*206668c3SJames Collins gettype($conf), 62*206668c3SJames Collins gettype($meta), 63*206668c3SJames Collins 'Both conf/default.php and conf/metadata.php have to exist and contain the same keys.' 64*206668c3SJames Collins ); 65*206668c3SJames Collins 66*206668c3SJames Collins if (gettype($conf) != 'NULL' && gettype($meta) != 'NULL') { 67*206668c3SJames Collins foreach ($conf as $key => $value) { 68*206668c3SJames Collins $this->assertArrayHasKey( 69*206668c3SJames Collins $key, 70*206668c3SJames Collins $meta, 71*206668c3SJames Collins 'Key $meta[\'' . $key . '\'] missing in conf/metadata.php' 72*206668c3SJames Collins ); 73*206668c3SJames Collins } 74*206668c3SJames Collins 75*206668c3SJames Collins foreach ($meta as $key => $value) { 76*206668c3SJames Collins $this->assertArrayHasKey( 77*206668c3SJames Collins $key, 78*206668c3SJames Collins $conf, 79*206668c3SJames Collins 'Key $conf[\'' . $key . '\'] missing in conf/default.php' 80*206668c3SJames Collins ); 81*206668c3SJames Collins } 82*206668c3SJames Collins } 83*206668c3SJames Collins } 84*206668c3SJames Collins 85*206668c3SJames Collins public function testSingletonPattern() 86*206668c3SJames Collins { 87*206668c3SJames Collins $instance1 = mikio::getInstance(); 88*206668c3SJames Collins $instance2 = mikio::getInstance(); 89*206668c3SJames Collins $this->assertSame($instance1, $instance2); 90*206668c3SJames Collins } 91*206668c3SJames Collins 92*206668c3SJames Collins public function testGetConf() 93*206668c3SJames Collins { 94*206668c3SJames Collins $instance = mikio::getInstance(); 95*206668c3SJames Collins $this->assertFalse($instance->getConf('nonexistent_key')); 96*206668c3SJames Collins } 97*206668c3SJames Collins 98*206668c3SJames Collins public function testIncludeFooter() 99*206668c3SJames Collins { 100*206668c3SJames Collins $instance = mikio::getInstance(); 101*206668c3SJames Collins $footer = $instance->includeFooter(false); 102*206668c3SJames Collins $this->assertIsString($footer); 103*206668c3SJames Collins } 104*206668c3SJames Collins 105*206668c3SJames Collins public function testUserCanEdit() 106*206668c3SJames Collins { 107*206668c3SJames Collins global $INFO; 108*206668c3SJames Collins $INFO['isadmin'] = true; 109*206668c3SJames Collins $instance = mikio::getInstance(); 110*206668c3SJames Collins $this->assertTrue($instance->userCanEdit()); 111*206668c3SJames Collins } 112*206668c3SJames Collins 113*206668c3SJames Collins public function testGetPageTitle() 114*206668c3SJames Collins { 115*206668c3SJames Collins global $conf; 116*206668c3SJames Collins $conf['title'] = 'Test Wiki'; 117*206668c3SJames Collins $instance = mikio::getInstance(); 118*206668c3SJames Collins $title = $instance->getPageTitle(); 119*206668c3SJames Collins $this->assertStringContainsString('Test Wiki', $title); 120*206668c3SJames Collins } 121*206668c3SJames Collins} 122