xref: /plugin/include/_test/nested_include.test.php (revision 69781840d34fa6ae25dd31730d4777a7af46f442)
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