185f2e777SMark Prins<?php 285f2e777SMark Prins/* 385f2e777SMark Prins * Copyright (c) 2016 Mark C. Prins <mprins@users.sf.net> 485f2e777SMark Prins * 585f2e777SMark Prins * Permission to use, copy, modify, and distribute this software for any 685f2e777SMark Prins * purpose with or without fee is hereby granted, provided that the above 785f2e777SMark Prins * copyright notice and this permission notice appear in all copies. 885f2e777SMark Prins * 985f2e777SMark Prins * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 1085f2e777SMark Prins * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 1185f2e777SMark Prins * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 1285f2e777SMark Prins * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 1385f2e777SMark Prins * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 1485f2e777SMark Prins * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 1585f2e777SMark Prins * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 1685f2e777SMark Prins */ 1785f2e777SMark Prins 18*c271718aSMark Prinsuse dokuwiki\Logger; 19*c271718aSMark Prins 2085f2e777SMark Prins/** 2185f2e777SMark Prins * Syntax tests for the backlinks plugin. 2285f2e777SMark Prins * 2385f2e777SMark Prins * @group plugin_backlinks 2485f2e777SMark Prins * @group plugins 2585f2e777SMark Prins */ 26*c271718aSMark Prinsclass syntax_include_deep_plugin_backlinks_test extends DokuWikiTest 27*c271718aSMark Prins{ 2885f2e777SMark Prins 2985f2e777SMark Prins protected $pluginsEnabled = array('backlinks'); 3085f2e777SMark Prins 3185f2e777SMark Prins /** 3285f2e777SMark Prins * copy data. 3385f2e777SMark Prins */ 34*c271718aSMark Prins public static function setUpBeforeClass(): void 35*c271718aSMark Prins { 3685f2e777SMark Prins parent::setUpBeforeClass(); 3785f2e777SMark Prins global $conf; 3885f2e777SMark Prins $conf['allowdebug'] = 1; 3985f2e777SMark Prins 4085f2e777SMark Prins TestUtils::rcopy(TMP_DIR, dirname(__FILE__) . '/data/'); 4185f2e777SMark Prins 4285f2e777SMark Prins dbglog("\nset up class syntax_plugin_backlinks_test"); 4385f2e777SMark Prins } 4485f2e777SMark Prins 45*c271718aSMark Prins public function setUp(): void 46*c271718aSMark Prins { 4785f2e777SMark Prins parent::setUp(); 4885f2e777SMark Prins 4985f2e777SMark Prins global $conf; 5085f2e777SMark Prins $conf['allowdebug'] = 1; 5185f2e777SMark Prins $conf['cachetime'] = -1; 52*c271718aSMark Prins $verbose = false; 53*c271718aSMark Prins $force = false; 5485f2e777SMark Prins 5585f2e777SMark Prins $data = array(); 5685f2e777SMark Prins search($data, $conf['datadir'], 'search_allpages', array('skipacl' => true)); 5785f2e777SMark Prins 5885f2e777SMark Prins foreach ($data as $val) { 5985f2e777SMark Prins idx_addPage($val['id'], $verbose, $force); 6085f2e777SMark Prins } 6185f2e777SMark Prins 6285f2e777SMark Prins if ($conf['allowdebug']) { 6385f2e777SMark Prins touch(DOKU_TMP_DATA . 'cache/debug.log'); 6485f2e777SMark Prins } 6585f2e777SMark Prins } 6685f2e777SMark Prins 67*c271718aSMark Prins public function tearDown(): void 68*c271718aSMark Prins { 6985f2e777SMark Prins parent::tearDown(); 7085f2e777SMark Prins 7185f2e777SMark Prins global $conf; 7285f2e777SMark Prins // try to get the debug log after running the test, print and clear 7385f2e777SMark Prins if ($conf['allowdebug']) { 7485f2e777SMark Prins print "\n"; 7585f2e777SMark Prins readfile(DOKU_TMP_DATA . 'cache/debug.log'); 7685f2e777SMark Prins unlink(DOKU_TMP_DATA . 'cache/debug.log'); 7785f2e777SMark Prins } 7885f2e777SMark Prins } 7985f2e777SMark Prins 80*c271718aSMark Prins public function testInclude(): void 81*c271718aSMark Prins { 8285f2e777SMark Prins $request = new TestRequest(); 83*c271718aSMark Prins $response = $request->get(array('id' => 'mmm:nnn:ooo:start')); 8485f2e777SMark Prins 8585f2e777SMark Prins $this->assertTrue( 86*c271718aSMark Prins str_contains($response->getContent(), 'Backlinks from pages in /aaa/bbb/cc/'), 8785f2e777SMark Prins '"Backlinks from pages in /aaa/bbb/cc/" was not in the output' 8885f2e777SMark Prins ); 8985f2e777SMark Prins 9085f2e777SMark Prins $this->assertFalse( 91*c271718aSMark Prins str_contains($response->getContent(), 'linking to a page form aaa'), 9285f2e777SMark Prins '"linking to a page form aaa" should not be in the output' 9385f2e777SMark Prins ); 9485f2e777SMark Prins 9585f2e777SMark Prins $doc = phpQuery::newDocument($response->getContent()); 9685f2e777SMark Prins // look for id="plugin__backlinks" 9785f2e777SMark Prins $this->assertEquals( 9885f2e777SMark Prins 1, 9985f2e777SMark Prins pq('#plugin__backlinks', $doc)->length, 10085f2e777SMark Prins 'There should be one backlinks element' 10185f2e777SMark Prins ); 10285f2e777SMark Prins 10385f2e777SMark Prins $wikilinks = pq('#plugin__backlinks ul li', $doc); 104*c271718aSMark Prins Logger::debug('found backlinks', $wikilinks->text()); 10585f2e777SMark Prins $this->assertEquals( 10685f2e777SMark Prins 5, 10785f2e777SMark Prins $wikilinks->contents()->length, 10885f2e777SMark Prins 'There should be 5 backlinks' 10985f2e777SMark Prins ); 11085f2e777SMark Prins 11185f2e777SMark Prins $lastlink = pq('a:last', $wikilinks); 112*c271718aSMark Prins Logger::debug("last backlink", $lastlink->text()); 11385f2e777SMark Prins $this->assertEquals( 11485f2e777SMark Prins 'linking to a namespace', 115*c271718aSMark Prins $lastlink->text(), 11685f2e777SMark Prins 'The last backlink should be "linking to a namespace"' 11785f2e777SMark Prins ); 11885f2e777SMark Prins } 11985f2e777SMark Prins} 120