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