xref: /plugin/include/_test/namespace_includes.test.php (revision 82a2b8dfa7cce03ca8fb9a06a1541465293ee5e9)
1<?php
2
3if (!defined('DOKU_INC')) die();
4
5/**
6 * Test namespace includes
7 */
8class plugin_include_namespaces_includes_test extends DokuWikiTest {
9    /**
10     * @var helper_plugin_include $helper
11     */
12    private $helper;
13
14    /**
15     * Setup - enable and load the include plugin and create the test pages
16     */
17    public function setup() {
18        $this->pluginsEnabled[] = 'include';
19        parent::setup(); // this enables the include plugin
20        $this->helper = plugin_load('helper', 'include');
21
22        global $conf;
23        $conf['hidepages'] = 'inclhidden:hidden';
24
25        // for testing hidden pages
26        saveWikiText('inclhidden:hidden', 'Hidden page', 'Created hidden page');
27        saveWikiText('inclhidden:visible', 'Visible page', 'Created visible page');
28
29        // pages on different levels
30        saveWikiText('incltest:level1', 'Page on level 1', 'Created page on level 1');
31        saveWikiText('incltest:ns:level2', 'Page on level 2', 'Created page on level 2');
32        saveWikiText('incltest:ns:ns:level3', 'Page on level 3', 'Created page on level 3');
33
34        // for page ordering
35        saveWikiText('inclorder:page1', 'Page 1', 'Created page 1');
36        saveWikiText('inclorder:page2', 'Page 2', 'Created page 2');
37        saveWikiText('inclorder:page3', '{{include_n>10}} Page 3/10', 'created page 3/1');
38        saveWikiText('inclorder:page4', '{{include_n>2}} Page 4/2', 'created page 4/0');
39    }
40
41    /**
42     * Test hiding of hidden pages in namespace includes
43     */
44    public function test_hidden() {
45        $flags = $this->helper->get_flags(array());
46        $pages = $this->helper->_get_included_pages('namespace', 'inclhidden:', '', '', $flags);
47        $this->assertEquals(array(
48                                 array('id' => 'inclhidden:visible', 'exists' => true, 'parent_id' => ''),
49                            ), $pages);
50    }
51
52    /**
53     * Test include depth limit
54     */
55    public function test_depth() {
56        $flags = $this->helper->get_flags(array());
57        $pages = $this->helper->_get_included_pages('namespace', 'incltest:', '', '', $flags);
58        $this->assertEquals(array(
59                                 array('id' => 'incltest:level1', 'exists' => true, 'parent_id' => ''),
60                            ), $pages);
61        $flags = $this->helper->get_flags(array('depth=2'));
62        $pages = $this->helper->_get_included_pages('namespace', 'incltest:', '', '', $flags);
63        $this->assertEquals(array(
64                                 array('id' => 'incltest:level1', 'exists' => true, 'parent_id' => ''),
65                                 array('id' => 'incltest:ns:level2', 'exists' => true, 'parent_id' => ''),
66                            ), $pages);
67        $flags = $this->helper->get_flags(array('depth=2'));
68        $pages = $this->helper->_get_included_pages('namespace', 'incltest:ns', '', '', $flags);
69        $this->assertEquals(array(
70                                 array('id' => 'incltest:ns:level2', 'exists' => true, 'parent_id' => ''),
71                                 array('id' => 'incltest:ns:ns:level3', 'exists' => true, 'parent_id' => ''),
72                            ), $pages);
73        $flags = $this->helper->get_flags(array('depth=0'));
74        $pages = $this->helper->_get_included_pages('namespace', 'incltest:', '', '', $flags);
75        $this->assertEquals(array(
76                                 array('id' => 'incltest:level1', 'exists' => true, 'parent_id' => ''),
77                                 array('id' => 'incltest:ns:level2', 'exists' => true, 'parent_id' => ''),
78                                 array('id' => 'incltest:ns:ns:level3', 'exists' => true, 'parent_id' => ''),
79                            ), $pages);
80
81        // test include of the root namespace
82        $flags = $this->helper->get_flags(array());
83        $pages = $this->helper->_get_included_pages('namespace', ':', '', '', $flags);
84        $this->assertEquals(array(array('id' => 'mailinglist', 'exists' => true, 'parent_id' => '')), $pages);
85        $flags = $this->helper->get_flags(array('depth=2'));
86        $pages = $this->helper->_get_included_pages('namespace', ':', '', '', $flags);
87        $this->assertEquals(array(
88                                 array('id' => 'inclhidden:visible', 'exists' => true, 'parent_id' => ''),
89                                 array('id' => 'inclorder:page1', 'exists' => true, 'parent_id' => ''),
90                                 array('id' => 'inclorder:page2', 'exists' => true, 'parent_id' => ''),
91                                 array('id' => 'inclorder:page3', 'exists' => true, 'parent_id' => ''),
92                                 array('id' => 'inclorder:page4', 'exists' => true, 'parent_id' => ''),
93                                 array('id' => 'incltest:level1', 'exists' => true, 'parent_id' => ''),
94                                 array('id' => 'mailinglist', 'exists' => true, 'parent_id' => ''),
95                                 array('id' => 'wiki:dokuwiki', 'exists' => true, 'parent_id' => ''),
96                                 array('id' => 'wiki:syntax', 'exists' => true, 'parent_id' => ''),
97                            ), $pages);
98    }
99
100    /**
101     * Test ordering of namespace includes
102     */
103    public function test_order() {
104
105        $flags = $this->helper->get_flags(array());
106        $pages = $this->helper->_get_included_pages('namespace', 'inclorder:', '', '', $flags);
107
108        $this->assertEquals(array(
109                                 array('id' => 'inclorder:page1', 'exists' => true, 'parent_id' => ''),
110                                 array('id' => 'inclorder:page2', 'exists' => true, 'parent_id' => ''),
111                                 array('id' => 'inclorder:page3', 'exists' => true, 'parent_id' => ''),
112                                 array('id' => 'inclorder:page4', 'exists' => true, 'parent_id' => ''),
113                            ), $pages);
114
115        $flags = $this->helper->get_flags(array('rsort'));
116        $pages = $this->helper->_get_included_pages('namespace', 'inclorder:', '', '', $flags);
117        $this->assertEquals(array(
118                                 array('id' => 'inclorder:page4', 'exists' => true, 'parent_id' => ''),
119                                 array('id' => 'inclorder:page3', 'exists' => true, 'parent_id' => ''),
120                                 array('id' => 'inclorder:page2', 'exists' => true, 'parent_id' => ''),
121                                 array('id' => 'inclorder:page1', 'exists' => true, 'parent_id' => ''),
122                            ), $pages);
123        $flags = $this->helper->get_flags(array('order=custom'));
124        $pages = $this->helper->_get_included_pages('namespace', 'inclorder:', '', '', $flags);
125        $this->assertEquals(array(
126                                 array('id' => 'inclorder:page4', 'exists' => true, 'parent_id' => ''),
127                                 array('id' => 'inclorder:page3', 'exists' => true, 'parent_id' => ''),
128                                 array('id' => 'inclorder:page1', 'exists' => true, 'parent_id' => ''),
129                                 array('id' => 'inclorder:page2', 'exists' => true, 'parent_id' => ''),
130                            ), $pages);
131
132        $flags = $this->helper->get_flags(array('order=custom', 'rsort'));
133        $pages = $this->helper->_get_included_pages('namespace', 'inclorder:', '', '', $flags);
134        $this->assertEquals(array(
135                                 array('id' => 'inclorder:page2', 'exists' => true, 'parent_id' => ''),
136                                 array('id' => 'inclorder:page1', 'exists' => true, 'parent_id' => ''),
137                                 array('id' => 'inclorder:page3', 'exists' => true, 'parent_id' => ''),
138                                 array('id' => 'inclorder:page4', 'exists' => true, 'parent_id' => ''),
139                            ), $pages);
140    }
141}
142