1<?php 2 3 4/** 5 * @group plugin_data 6 * @group plugins 7 * @group slow 8 */ 9class db_data_entry_test extends DokuWikiTest 10{ 11 12 protected $pluginsEnabled = array('data', 'sqlite',); 13 14 15 public function setUp(): void 16 { 17 parent::setUp(); 18 19 saveWikiText('foo', "====== Page-Heading ======", 'summary'); 20 $req = new TestRequest(); 21 $req->get(array('id' => 'foo')); 22 23 24 saveWikiText('testpage', "---- dataentry Testentry ----\n" 25 . "test1_title: foo|bar\n" 26 . "----\n", 'summary'); 27 //trigger save to db 28 $req = new TestRequest(); 29 $req->get(array(), '/doku.php?id=testpage'); 30 } 31 32 function test_title_input_id() 33 { 34 35 $test_table = "---- datatable Testtable ----\n" 36 . "cols: %pageid%, test1\n" 37 . "filter: test1~ *foo*\n"; 38 39 /** @var syntax_plugin_data_entry $plugin */ 40 $plugin = plugin_load('syntax', 'data_table'); 41 42 $handler = new Doku_Handler(); 43 $data = $plugin->handle($test_table, 0, 0, $handler); 44 $renderer = new Doku_Renderer_xhtml(); 45 $plugin->render('xhtml', $renderer, $data); 46 47 $result = $renderer->doc; 48 49 $actual_value = substr($result, strpos($result, '<td class="align test1">') + 24); 50 $actual_value = substr($actual_value, 0, strpos($actual_value, '</td>')); 51 $expected_value = 'foo|bar'; 52 $this->assertSame($expected_value, $actual_value); 53 54 $actual_link = substr($result, strpos($result, '<td class="align pageid">') + 25); 55 $actual_link = substr($actual_link, strpos($actual_link, 'doku.php')); 56 $actual_link = substr($actual_link, 0, strpos($actual_link, '</a>')); 57 58 $this->assertSame('doku.php?id=testpage" class="wikilink1" title="testpage" data-wiki-id="testpage">testpage', $actual_link); 59 60 } 61 62 function test_title_input_title() 63 { 64 65 $test_table = "---- datatable Testtable ----\n" 66 . "cols: %pageid%, test1\n" 67 . "filter: test1~ *bar*\n"; 68 69 /** @var syntax_plugin_data_entry $plugin */ 70 $plugin = plugin_load('syntax', 'data_table'); 71 72 $handler = new Doku_Handler(); 73 $data = $plugin->handle($test_table, 0, 0, $handler); 74 $renderer = new Doku_Renderer_xhtml(); 75 $plugin->render('xhtml', $renderer, $data); 76 77 $result = $renderer->doc; 78 79 $actual_value = substr($result, strpos($result, '<td class="align test1">') + 24); 80 $actual_value = substr($actual_value, 0, strpos($actual_value, '</td>')); 81 $expected_value = 'foo|bar'; 82 $this->assertSame($expected_value, $actual_value); 83 84 $actual_link = substr($result, strpos($result, '<td class="align pageid">') + 25); 85 $actual_link = substr($actual_link, strpos($actual_link, 'doku.php')); 86 $actual_link = substr($actual_link, 0, strpos($actual_link, '</a>')); 87 88 $this->assertSame('doku.php?id=testpage" class="wikilink1" title="testpage" data-wiki-id="testpage">testpage', $actual_link); 89 } 90 91 function test_title_input_Heading() 92 { 93 94 $test_table = "---- datatable Testtable ----\n" 95 . "cols: %pageid%, test1\n" 96 . "filter: test1_title~ *Heading*\n"; 97 98 /** @var syntax_plugin_data_entry $plugin */ 99 $plugin = plugin_load('syntax', 'data_table'); 100 101 $handler = new Doku_Handler(); 102 $data = $plugin->handle($test_table, 0, 0, $handler); 103 $renderer = new Doku_Renderer_xhtml(); 104 $plugin->render('xhtml', $renderer, $data); 105 106 $result = $renderer->doc; 107 108 $actual_value = substr($result, strpos($result, '<td class="align test1">') + 24); 109 $actual_value = substr($actual_value, 0, strpos($actual_value, '</td>')); 110 $expected_value = 'foo|bar'; 111 $this->assertSame($expected_value, $actual_value); 112 113 $actual_link = substr($result, strpos($result, '<td class="align pageid">') + 25); 114 $actual_link = substr($actual_link, strpos($actual_link, 'doku.php')); 115 $actual_link = substr($actual_link, 0, strpos($actual_link, '</a>')); 116 117 $this->assertSame('doku.php?id=testpage" class="wikilink1" title="testpage" data-wiki-id="testpage">testpage', $actual_link); 118 } 119 120 function test_title_input_stackns() 121 { 122 123 $test_table = "---- datatable Testtable ----\n" 124 . "cols: %pageid%, test1\n"; 125 126 global $ID; 127 $ID = 'foo:bar:start'; 128 129 /** @var syntax_plugin_data_entry $plugin */ 130 $plugin = plugin_load('syntax', 'data_table'); 131 132 $handler = new Doku_Handler(); 133 $data = $plugin->handle($test_table, 0, 0, $handler); 134 $renderer = new Doku_Renderer_xhtml(); 135 $plugin->render('xhtml', $renderer, $data); 136 137 $result = $renderer->doc; 138 139 $actual_value = substr($result, strpos($result, '<td class="align test1">') + 24); 140 $actual_value = substr($actual_value, 0, strpos($actual_value, '</td>')); 141 $expected_value = 'foo|bar'; 142 $this->assertSame($expected_value, $actual_value); 143 144 $actual_link = substr($result, strpos($result, '<td class="align pageid">') + 25); 145 $actual_link = substr($actual_link, strpos($actual_link, 'doku.php')); 146 $actual_link = substr($actual_link, 0, strpos($actual_link, '</a>')); 147 148 $this->assertSame('doku.php?id=testpage" class="wikilink1" title="testpage" data-wiki-id="testpage">testpage', $actual_link); 149 } 150 151} 152