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