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