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