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