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