xref: /template/mikio/_test/general.test.php (revision 206668c3cc85f041763581a6fdf623e82795cbe0)
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