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