1<?php
2
3/**
4 * @group plugin_tagfilter
5 * @group plugins
6 */
7class plugin_tagfilter_syntax_test extends DokuWikiTest
8{
9
10    protected $pluginsEnabled = [
11        'tag', 'tagfilter'
12    ];
13
14    public function setup(): void
15    {
16        parent::setup();
17        $this->_createPages();
18    }
19
20
21    public function test_basic_syntax()
22    {
23        global $ID, $INFO;
24        $ID = 'test:plugin_tagfilter:start';
25        $INFO = pageinfo(); //filepath is used
26        $xhtml = p_wiki_xhtml('test:plugin_tagfilter:start');
27        $doc = phpQuery::newDocument($xhtml);
28
29        $form = pq('form[data-plugin=tagfilter]', $doc);
30
31        //echo $form;
32        $select = pq('select', $form);
33        $this->assertTrue($select->count() === 3);
34        $this->assertEquals('T1', $select->eq(0)->attr('name'));
35        $this->assertEquals('T2', $select->eq(1)->attr('name'));
36        $this->assertEquals('T3', $select->eq(2)->attr('name'));
37
38        $this->assertEquals('T1 selection', $select->eq(0)->attr('data-placeholder'));
39        $this->assertEquals('T2 selection', $select->eq(1)->attr('data-placeholder'));
40        $this->assertEquals('T3 selection', $select->eq(2)->attr('data-placeholder'));
41
42        $this->assertNull($select->eq(0)->attr('multiple'));
43        $this->assertNull($select->eq(1)->attr('multiple'));
44        $this->assertNull($select->eq(2)->attr('multiple'));
45
46        $options = pq('option', $select->eq(0));
47        $this->assertEquals('', $options->eq(0)->text());
48        $this->assertEquals('Blorg', $options->eq(1)->text());
49
50        $options = pq('option', $select->eq(1));
51        $this->assertEquals('', $options->eq(0)->text());
52        $this->assertEquals('A', $options->eq(1)->text());
53        $this->assertEquals('B', $options->eq(2)->text());
54
55        $options = pq('option', $select->eq(2));
56        $this->assertEquals('', $options->eq(0)->text());
57        $this->assertEquals('1', $options->eq(1)->text());
58        $this->assertEquals('2', $options->eq(2)->text());
59    }
60
61    public function test_syntax_pagesearch()
62    {
63        global $ID, $INFO;
64        $ID = 'test:plugin_tagfilter:start2';
65        $INFO = pageinfo(); //filepath is used
66        $xhtml = p_wiki_xhtml('test:plugin_tagfilter:start2');
67        $doc = phpQuery::newDocument($xhtml);
68
69        $form = pq('form[data-plugin=tagfilter]', $doc);
70        $select = pq('select', $form);
71        $this->assertTrue($select->count() === 4);
72
73
74        $options = pq('option', $select->eq(0));
75        $this->assertEquals('', $options->eq(0)->text());
76        $this->assertEquals('Tagpage1', $options->eq(1)->text());
77        $this->assertEquals('Tagpage2', $options->eq(2)->text());
78    }
79
80    public function test_syntax_multi()
81    {
82        global $ID, $INFO;
83        $ID = 'test:plugin_tagfilter:start3';
84        $INFO = pageinfo(); //filepath is used
85        $xhtml = p_wiki_xhtml('test:plugin_tagfilter:start3');
86        $doc = phpQuery::newDocument($xhtml);
87
88        $form = pq('form[data-plugin=tagfilter]', $doc);
89
90        $select = pq('select', $form);
91        $this->assertTrue($select->count() === 3);
92        $this->assertEquals('multiple', $select->eq(0)->attr('multiple'));
93        $this->assertEquals('multiple', $select->eq(1)->attr('multiple'));
94        $this->assertEquals('multiple', $select->eq(2)->attr('multiple'));
95
96        $options = pq('option', $select->eq(0));
97        $this->assertEquals('Blorg', $options->eq(0)->text());
98
99    }
100
101    protected function _createPages()
102    {
103        saveWikiText('test:plugin_tagfilter:tags:tagpage1', '==== Tagpage1 ====' . DOKU_LF . '{{tag>cat1:blorg cat2:a cat3:1}}', 'test');
104        saveWikiText('test:plugin_tagfilter:tags:tagpage2', '==== Tagpage2 ====' . DOKU_LF . '{{tag>cat1:blorg cat2:b cat3:2}}', 'test');
105        saveWikiText('test:plugin_tagfilter:start', '{{tagfilter>test:plugin_tagfilter:tags?T1=cat1:.*|T2=cat2:.*|T3=cat3:.*}}', 'test');
106        saveWikiText('test:plugin_tagfilter:start2', '{{tagfilter>test:plugin_tagfilter:tags?T1=cat1:.*|T2=cat2:.*|T3=cat3:.*&pagesearch}}', 'test');
107        saveWikiText('test:plugin_tagfilter:start3', '{{tagfilter>test:plugin_tagfilter:tags?T1=cat1:.*|T2=cat2:.*|T3=cat3:.*&multi}}', 'test');
108
109        idx_addPage('test:plugin_tagfilter:tags:tagpage1', false);
110        idx_addPage('test:plugin_tagfilter:tags:tagpage2', false);
111    }
112
113
114}
115