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