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