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