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