1<?php
2
3namespace dokuwiki\plugin\struct\test\types;
4
5use dokuwiki\plugin\struct\test\mock\AccessTable;
6use dokuwiki\plugin\struct\test\mock\Dropdown;
7use dokuwiki\plugin\struct\test\StructTest;
8
9/**
10 * Testing the Dropdown Type
11 *
12 * @group plugin_struct
13 * @group plugins
14 */
15class DropdownTest extends StructTest
16{
17
18    protected function preparePages()
19    {
20        $this->loadSchemaJSON('dropdowns');
21        $now = time();
22        $this->saveData(
23            'test1',
24            'dropdowns',
25            [
26                'drop1' => '["test1",1]', 'drop2' => '["test1",1]', 'drop3' => 'John'
27            ],
28            $now
29        );
30        $this->saveData(
31            'test2',
32            'dropdowns',
33            [
34                'drop1' => '["test1",2]', 'drop2' => '["test1",2]', 'drop3' => 'Jane'
35            ],
36            $now
37        );
38        $this->saveData(
39            'test3',
40            'dropdowns',
41            [
42                'drop1' => '["test1",3]', 'drop2' => '["test1",3]', 'drop3' => 'Tarzan'
43            ],
44            $now
45        );
46    }
47
48
49    public function test_data()
50    {
51        $this->preparePages();
52
53        $access = AccessTable::getPageAccess('dropdowns', 'test1');
54        $data = $access->getData();
55
56        $this->assertEquals('John', $data['drop3']->getValue());
57        $this->assertEquals('John', $data['drop3']->getRawValue());
58        $this->assertEquals('John', $data['drop3']->getDisplayValue());
59
60        $R = new \Doku_Renderer_xhtml();
61        $data['drop3']->render($R, 'xhtml');
62        $this->assertEquals('John', $R->doc);
63    }
64
65
66    public function test_getOptions()
67    {
68        // fixed values
69        $dropdown = new Dropdown(
70            [
71                'values' => 'John, Jane, Tarzan',
72            ],
73            'test',
74            false,
75            0
76        );
77        $expect = array(
78            '' => '',
79            'Jane' => 'Jane',
80            'John' => 'John',
81            'Tarzan' => 'Tarzan'
82        );
83        $this->assertEquals($expect, $dropdown->getOptions());
84    }
85
86}
87