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