diff --git a/_test/namespace_includes.test.php b/_test/namespace_includes.test.php new file mode 100644 index 0000000..f077d07 --- /dev/null +++ b/_test/namespace_includes.test.php @@ -0,0 +1,140 @@ +pluginsEnabled[] = 'include'; + parent::setup(); // this enables the include plugin + $this->helper = plugin_load('helper', 'include'); + + global $conf; + $conf['hidepages'] = 'inclhidden:hidden'; + + // for testing hidden pages + saveWikiText('inclhidden:hidden', 'Hidden page', 'Created hidden page'); + saveWikiText('inclhidden:visible', 'Visible page', 'Created visible page'); + + // pages on different levels + saveWikiText('incltest:level1', 'Page on level 1', 'Created page on level 1'); + saveWikiText('incltest:ns:level2', 'Page on level 2', 'Created page on level 2'); + saveWikiText('incltest:ns:ns:level3', 'Page on level 3', 'Created page on level 3'); + + // for page ordering + saveWikiText('inclorder:page1', 'Page 1', 'Created page 1'); + saveWikiText('inclorder:page2', 'Page 2', 'Created page 2'); + saveWikiText('inclorder:page3', '{{include_n>1}} Page 3/1', 'created page 3/1'); + saveWikiText('inclorder:page4', '{{include_n>0}} Page 4/0', 'created page 4/0'); + } + + /** + * Test hiding of hidden pages in namespace includes + */ + public function test_hidden() { + $flags = $this->helper->get_flags(array()); + $pages = $this->helper->_get_included_pages('namespace', 'inclhidden:', '', '', $flags); + $this->assertEquals(array( + array('id' => 'inclhidden:visible', 'exists' => true, 'parent_id' => ''), + ), $pages); + } + + /** + * Test include depth limit + */ + public function test_depth() { + $flags = $this->helper->get_flags(array()); + $pages = $this->helper->_get_included_pages('namespace', 'incltest:', '', '', $flags); + $this->assertEquals(array( + array('id' => 'incltest:level1', 'exists' => true, 'parent_id' => ''), + ), $pages); + $flags = $this->helper->get_flags(array('depth=2')); + $pages = $this->helper->_get_included_pages('namespace', 'incltest:', '', '', $flags); + $this->assertEquals(array( + array('id' => 'incltest:level1', 'exists' => true, 'parent_id' => ''), + array('id' => 'incltest:ns:level2', 'exists' => true, 'parent_id' => ''), + ), $pages); + $flags = $this->helper->get_flags(array('depth=2')); + $pages = $this->helper->_get_included_pages('namespace', 'incltest:ns', '', '', $flags); + $this->assertEquals(array( + array('id' => 'incltest:ns:level2', 'exists' => true, 'parent_id' => ''), + array('id' => 'incltest:ns:ns:level3', 'exists' => true, 'parent_id' => ''), + ), $pages); + $flags = $this->helper->get_flags(array('depth=0')); + $pages = $this->helper->_get_included_pages('namespace', 'incltest:', '', '', $flags); + $this->assertEquals(array( + array('id' => 'incltest:level1', 'exists' => true, 'parent_id' => ''), + array('id' => 'incltest:ns:level2', 'exists' => true, 'parent_id' => ''), + array('id' => 'incltest:ns:ns:level3', 'exists' => true, 'parent_id' => ''), + ), $pages); + + // test include of the root namespace + $flags = $this->helper->get_flags(array()); + $pages = $this->helper->_get_included_pages('namespace', ':', '', '', $flags); + $this->assertEquals(array(), $pages); + $flags = $this->helper->get_flags(array('depth=2')); + $pages = $this->helper->_get_included_pages('namespace', ':', '', '', $flags); + $this->assertEquals(array( + array('id' => 'inclhidden:visible', 'exists' => true, 'parent_id' => ''), + array('id' => 'inclorder:page1', 'exists' => true, 'parent_id' => ''), + array('id' => 'inclorder:page2', 'exists' => true, 'parent_id' => ''), + array('id' => 'inclorder:page3', 'exists' => true, 'parent_id' => ''), + array('id' => 'inclorder:page4', 'exists' => true, 'parent_id' => ''), + array('id' => 'incltest:level1', 'exists' => true, 'parent_id' => ''), + array('id' => 'wiki:dokuwiki', 'exists' => true, 'parent_id' => ''), + array('id' => 'wiki:syntax', 'exists' => true, 'parent_id' => ''), + ), $pages); + } + + /** + * Test ordering of namespace includes + */ + public function test_order() { + + $flags = $this->helper->get_flags(array()); + $pages = $this->helper->_get_included_pages('namespace', 'inclorder:', '', '', $flags); + + $this->assertEquals(array( + array('id' => 'inclorder:page1', 'exists' => true, 'parent_id' => ''), + array('id' => 'inclorder:page2', 'exists' => true, 'parent_id' => ''), + array('id' => 'inclorder:page3', 'exists' => true, 'parent_id' => ''), + array('id' => 'inclorder:page4', 'exists' => true, 'parent_id' => ''), + ), $pages); + + $flags = $this->helper->get_flags(array('rsort')); + $pages = $this->helper->_get_included_pages('namespace', 'inclorder:', '', '', $flags); + $this->assertEquals(array( + array('id' => 'inclorder:page4', 'exists' => true, 'parent_id' => ''), + array('id' => 'inclorder:page3', 'exists' => true, 'parent_id' => ''), + array('id' => 'inclorder:page2', 'exists' => true, 'parent_id' => ''), + array('id' => 'inclorder:page1', 'exists' => true, 'parent_id' => ''), + ), $pages); + $flags = $this->helper->get_flags(array('order=custom')); + $pages = $this->helper->_get_included_pages('namespace', 'inclorder:', '', '', $flags); + $this->assertEquals(array( + array('id' => 'inclorder:page4', 'exists' => true, 'parent_id' => ''), + array('id' => 'inclorder:page3', 'exists' => true, 'parent_id' => ''), + array('id' => 'inclorder:page1', 'exists' => true, 'parent_id' => ''), + array('id' => 'inclorder:page2', 'exists' => true, 'parent_id' => ''), + ), $pages); + + $flags = $this->helper->get_flags(array('order=custom', 'rsort')); + $pages = $this->helper->_get_included_pages('namespace', 'inclorder:', '', '', $flags); + $this->assertEquals(array( + array('id' => 'inclorder:page2', 'exists' => true, 'parent_id' => ''), + array('id' => 'inclorder:page1', 'exists' => true, 'parent_id' => ''), + array('id' => 'inclorder:page3', 'exists' => true, 'parent_id' => ''), + array('id' => 'inclorder:page4', 'exists' => true, 'parent_id' => ''), + ), $pages); + } +}