xref: /dokuwiki/_test/tests/inc/search/search.test.php (revision f9a94e78392d6a178b0e7f29a005688fc44e5cc3)
1<?php
2
3class search_test extends DokuWikiTest {
4
5    function strip_index_data($entry) {
6        $n_entry = array();
7        foreach(array('id', 'type', 'level', 'open') as $k) {
8            $n_entry[$k] = $entry[$k];
9        }
10        return $n_entry;
11    }
12
13    function test_search_allpages(){
14      $data = array();
15
16      //depth is 0 hence we should recurse endlesly
17      search($data, dirname(__FILE__) . '/data', 'search_allpages',  array('depth' => 0), 'ns1');
18      $this->assertEquals(3, count($data));
19
20      //depth is 1 and we start too deep to expect results
21      $data = array();
22      search($data, dirname(__FILE__) . '/data', 'search_allpages',  array('depth' => 1), 'ns1/ns3');
23      $this->assertEquals(0, count($data));
24
25      //depth is 2 so I should get only pages from ns1
26      $data = array();
27      search($data, dirname(__FILE__) . '/data', 'search_allpages', array('depth' => 2), 'ns1');
28      $this->assertEquals(2, count($data));
29    }
30
31    function test_search_index(){
32        $data = array();
33        search($data, dirname(__FILE__) . '/data', 'search_index',
34               array('ns' => 'ns2'));
35        $this->assertEquals(array_map(array($this, 'strip_index_data'), $data),
36                           array(
37                              array(
38                                'id'   => 'ns1',
39                                'type' => 'd',
40                                'level' => 1,
41                                'open' => false
42                              ), array(
43                                'id'   => 'ns2',
44                                'type' => 'd',
45                                'level' => 1,
46                                'open' => true
47                              ), array(
48                                'id' => 'ns2:page1',
49                                'type' => 'f',
50                                'level' => 2,
51                                'open' => true,
52                              ), ));
53        $data = array();
54        search($data, dirname(__FILE__) . '/data', 'search_index',
55               array('ns' => 'ns1/ns3'));
56        $this->assertEquals(array_map(array($this, 'strip_index_data'), $data),
57                           array(
58                              array(
59                                'id' => 'ns1',
60                                'type' => 'd',
61                                'level' => 1,
62                                'open' => true,
63                              ),
64                              array(
65                                'id' => 'ns1:ns3',
66                                'type' => 'd',
67                                'level' => 2,
68                                'open' => true,
69                              ),
70                              array(
71                                'id' => 'ns1:ns3:page3',
72                                'type' => 'f',
73                                'level' => 3,
74                                'open' => true,
75                              ),
76                              array(
77                                'id' => 'ns1:page1',
78                                'type' => 'f',
79                                'level' => 2,
80                                'open' => true,
81                              ),
82                              array(
83                                'id' => 'ns1:page2',
84                                'type' => 'f',
85                                'level' => 2,
86                                'open' => true,
87                              ),
88                              array(
89                                'id' => 'ns2',
90                                'type' => 'd',
91                                'level' => 1,
92                                'open' => false,
93                              ), ));
94        $data = array();
95        search($data, dirname(__FILE__) . '/data', 'search_index',
96               array('ns' => 'ns1/ns3', 'nofiles' => true));
97        $this->assertEquals(array_map(array($this, 'strip_index_data'), $data),
98                           array(
99                              array(
100                                'id' => 'ns1',
101                                'type' => 'd',
102                                'level' => 1,
103                                'open' => true,
104                              ),
105                              array(
106                                'id' => 'ns1:ns3',
107                                'type' => 'd',
108                                'level' => 2,
109                                'open' => true,
110                              ),
111                              array(
112                                'id' => 'ns2',
113                                'type' => 'd',
114                                'level' => 1,
115                                'open' => false,
116                              ), ));
117
118    }
119}
120//Setup VIM: ex: et ts=4 :
121