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