175668fa9SMichael Hamann<?php 2afa996bcSMichael Hamann 3c76c7b12SAndreas Gohr/** 4c76c7b12SAndreas Gohr * Class plugin_include_nested_test 5c76c7b12SAndreas Gohr * 6c76c7b12SAndreas Gohr * @group plugin_include 7c76c7b12SAndreas Gohr * @group plugins 8c76c7b12SAndreas Gohr */ 9afa996bcSMichael Hamannclass plugin_include_nested_test extends DokuWikiTest { 1075668fa9SMichael Hamann private $ids = array( 1175668fa9SMichael Hamann 'test:plugin_include:nested:start', 1275668fa9SMichael Hamann 'test:plugin_include:nested:second', 1375668fa9SMichael Hamann 'test:plugin_include:nested:third' 1475668fa9SMichael Hamann ); 1575668fa9SMichael Hamann 16*69781840SAnna Dabrowska public function setUp() : void 17*69781840SAnna Dabrowska { 18afa996bcSMichael Hamann $this->pluginsEnabled[] = 'include'; 19*69781840SAnna Dabrowska parent::setUp(); 2075668fa9SMichael Hamann } 2175668fa9SMichael Hamann 22afa996bcSMichael Hamann public function test_outer_to_inner() { 23afa996bcSMichael Hamann $this->_createPages(); 2475668fa9SMichael Hamann $mainHTML = p_wiki_xhtml('test:plugin_include:nested:start'); 2575668fa9SMichael Hamann $secondHTML = p_wiki_xhtml('test:plugin_include:nested:second'); 2675668fa9SMichael Hamann $thirdHTML = p_wiki_xhtml('test:plugin_include:nested:third'); 2775668fa9SMichael Hamann $this->_validateContent($mainHTML, $secondHTML, $thirdHTML); 2875668fa9SMichael Hamann } 2975668fa9SMichael Hamann 30afa996bcSMichael Hamann public function test_inner_to_outer() { 31afa996bcSMichael Hamann $this->_createPages(); 3275668fa9SMichael Hamann $thirdHTML = p_wiki_xhtml('test:plugin_include:nested:third'); 3375668fa9SMichael Hamann $secondHTML = p_wiki_xhtml('test:plugin_include:nested:second'); 3475668fa9SMichael Hamann $mainHTML = p_wiki_xhtml('test:plugin_include:nested:start'); 3575668fa9SMichael Hamann $this->_validateContent($mainHTML, $secondHTML, $thirdHTML); 3675668fa9SMichael Hamann } 3775668fa9SMichael Hamann 3875668fa9SMichael Hamann private function _validateContent($mainHTML, $secondHTML, $thirdHTML) { 3975668fa9SMichael Hamann $this->assertTrue(strpos($mainHTML, 'Main Content') !== false, 'Main content contains "Main Content"'); 4075668fa9SMichael Hamann $this->assertTrue($this->_matchHeader('1', 'Main Test Page', $mainHTML), 'Main page header is h1'); 4175668fa9SMichael Hamann $this->assertTrue(strpos($mainHTML, 'Second Content') !== false, 'Main content contains "Second Content"'); 4275668fa9SMichael Hamann $this->assertTrue($this->_matchHeader('2', 'Second Test Page', $mainHTML), 'Second page header on main page is h2'); 4375668fa9SMichael Hamann $this->assertTrue(strpos($mainHTML, 'Third Content') !== false, 'Main content contains "Third Content"'); 4475668fa9SMichael Hamann $this->assertTrue($this->_matchHeader('3', 'Third Test Page', $mainHTML), 'Third page header on main page is h3'); 4575668fa9SMichael Hamann $this->assertTrue(strpos($secondHTML, 'Second Content') !== false, 'Second content contains "Second Content"'); 4675668fa9SMichael Hamann $this->assertTrue($this->_matchHeader('1', 'Second Test Page', $secondHTML), 'Second page header on second page is h1'); 4775668fa9SMichael Hamann $this->assertTrue(strpos($secondHTML, 'Third Content') !== false, 'Second content contains "Third Content"'); 4875668fa9SMichael Hamann $this->assertTrue($this->_matchHeader('2', 'Third Test Page', $secondHTML), 'Third page header on second page is h2'); 4975668fa9SMichael Hamann $this->assertTrue(strpos($thirdHTML, 'Third Content') !== false, 'Third content contains "Third Content"'); 5075668fa9SMichael Hamann $this->assertTrue($this->_matchHeader('1', 'Third Test Page', $thirdHTML), 'Third page header on third page is h1'); 5175668fa9SMichael Hamann } 5275668fa9SMichael Hamann 5375668fa9SMichael Hamann private function _matchHeader($level, $text, $html) { 54b26ef077SMichael Hamann return preg_match('/<h'.$level.'[^>]*>(<a[^>]*>)?'.$text.'/', $html) > 0; 5575668fa9SMichael Hamann } 56afa996bcSMichael Hamann 57afa996bcSMichael Hamann private function _createPages() { 58afa996bcSMichael Hamann saveWikiText('test:plugin_include:nested:start', 59afa996bcSMichael Hamann '====== Main Test Page ======'.DOKU_LF.DOKU_LF 60afa996bcSMichael Hamann .'Main Content'.rand().DOKU_LF.DOKU_LF 61afa996bcSMichael Hamann .'{{page>second}}'.DOKU_LF, 62afa996bcSMichael Hamann 'setup for test'); 63afa996bcSMichael Hamann saveWikiText('test:plugin_include:nested:second', 64afa996bcSMichael Hamann '====== Second Test Page ======'.DOKU_LF.DOKU_LF 65afa996bcSMichael Hamann .'Second Content'.rand().DOKU_LF.DOKU_LF 66afa996bcSMichael Hamann .'{{page>third}}'.DOKU_LF, 67afa996bcSMichael Hamann 'setup for test'); 68afa996bcSMichael Hamann saveWikiText('test:plugin_include:nested:third', 69afa996bcSMichael Hamann '====== Third Test Page ======'.DOKU_LF.DOKU_LF 70afa996bcSMichael Hamann .'Third Content'.rand().DOKU_LF.DOKU_LF 71afa996bcSMichael Hamann .'{{page>third}}'.DOKU_LF, 72afa996bcSMichael Hamann 'setup for test'); 73afa996bcSMichael Hamann } 7475668fa9SMichael Hamann} 7575668fa9SMichael Hamann 76