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