1<?php 2 3namespace dokuwiki\plugin\struct\test; 4 5use dokuwiki\plugin\struct\meta\Schema; 6 7/** 8 * @group plugin_struct 9 * @group plugins 10 */ 11class Type_Tag_struct_test extends StructTest 12{ 13 14 public function setUp(): void 15 { 16 parent::setUp(); 17 $this->loadSchemaJSON('tag'); 18 19 $this->waitForTick(); 20 $this->saveData('page1', 'tag', array('tag' => 'Aragorn', 'tags' => array('Faramir', 'Gollum')), time()); 21 $this->saveData('page2', 'tag', array('tag' => 'Eldarion', 'tags' => array('Saruman', 'Arwen')), time()); 22 $this->waitForTick(); 23 $this->saveData('page1', 'tag', array('tag' => 'Treebeard', 'tags' => array('Frodo', 'Arwen')), time()); 24 } 25 26 27 public function test_autocomplete() 28 { 29 global $INPUT; 30 $schema = new Schema('tag'); 31 32 // search tag field, should not find Aragon because tag is not in current revision 33 $INPUT->set('search', 'ar'); 34 $tag = $schema->findColumn('tag')->getType(); 35 $return = $tag->handleAjax(); 36 $expect = array( 37 array('label' => 'Eldarion', 'value' => 'Eldarion'), 38 array('label' => 'Treebeard', 'value' => 'Treebeard'), 39 ); 40 $this->assertEquals($expect, $return); 41 42 // multi value 43 $INPUT->set('search', 'ar'); 44 $tag = $schema->findColumn('tags')->getType(); 45 $return = $tag->handleAjax(); 46 $expect = array( 47 array('label' => 'Arwen', 'value' => 'Arwen'), 48 array('label' => 'Saruman', 'value' => 'Saruman'), 49 ); 50 $this->assertEquals($expect, $return); 51 52 } 53} 54