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