xref: /plugin/dw2pdf/_test/TemplateTest.php (revision 92200750cd9cfc4a9489fe7c04c6e41b5a3de6ee)
1<?php
2
3namespace dokuwiki\plugin\dw2pdf\test;
4
5use dokuwiki\plugin\dw2pdf\src\AbstractCollector;
6use dokuwiki\plugin\dw2pdf\src\Config;
7use dokuwiki\plugin\dw2pdf\src\PageCollector;
8use dokuwiki\plugin\dw2pdf\src\Template;
9use DokuWikiTest;
10
11/**
12 * @group plugin_dw2pdf
13 * @group plugins
14 */
15class TemplateTest extends DokuWikiTest
16{
17    public function setUp(): void
18    {
19        parent::setUp();
20        $_REQUEST = [];
21    }
22
23    /**
24     * Template placeholders (title, username, QR codes, links) should be expanded from context data.
25     */
26    public function testPlaceholderReplacement(): void
27    {
28        global $ID, $INPUT, $conf;
29        $INPUT->set('book_title', 'Export Title');
30        $ID = 'playground:templatepage';
31        saveWikiText($ID, 'template test', 'create');
32
33        $config = new Config([
34            'qrcodescale' => 1.5,
35        ]);
36
37        $collector = new PageCollector($config);
38        $template = new Template($config);
39        $template->setContext($collector, $ID, 'username');
40
41        $html = $template->getHTML('unittest');
42
43        $this->assertStringContainsString('Page Number: {PAGENO}', $html);
44        $this->assertStringContainsString('Total Pages: {nbpg}', $html);
45        $this->assertStringContainsString('Document Title: Export Title', $html);
46        $this->assertStringContainsString('Wiki Title: ' . $conf['title'], $html);
47        $this->assertStringContainsString('Wiki URL: ' . DOKU_URL, $html);
48        $this->assertStringNotContainsString('@DATE@', $html);
49        $this->assertStringContainsString('User: username', $html);
50        $this->assertStringContainsString('Base Path: ' . DOKU_BASE, $html);
51        $this->assertStringContainsString('Include Dir: ' . DOKU_INC, $html);
52        $this->assertStringContainsString('Template Base Path: ' . DOKU_BASE . 'lib/plugins/dw2pdf/tpl/default/', $html);
53        $this->assertStringContainsString('Template Include Dir: ' . DOKU_INC . 'lib/plugins/dw2pdf/tpl/default/', $html);
54        $this->assertStringContainsString('Page ID: ' . $ID, $html);
55
56        $revisionDate = dformat(filemtime(wikiFN($ID)));
57        $this->assertStringContainsString('Revision: ' . $revisionDate, $html);
58
59        $pageUrl = wl($ID, [], true, '&');
60        $this->assertStringContainsString('Page URL: ' . $pageUrl, $html);
61        $this->assertStringContainsString('<barcode', $html);
62        $this->assertStringContainsString('size="1.5"', $html);
63        $this->assertStringNotContainsString('@QRCODE@', $html);
64    }
65}
66