18b9d90aaSMark Prins<?php 28b9d90aaSMark Prins/* 38b9d90aaSMark Prins * Copyright (c) 2016 Mark C. Prins <mprins@users.sf.net> 48b9d90aaSMark Prins * 58b9d90aaSMark Prins * Permission to use, copy, modify, and distribute this software for any 68b9d90aaSMark Prins * purpose with or without fee is hereby granted, provided that the above 78b9d90aaSMark Prins * copyright notice and this permission notice appear in all copies. 88b9d90aaSMark Prins * 98b9d90aaSMark Prins * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 108b9d90aaSMark Prins * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 118b9d90aaSMark Prins * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 128b9d90aaSMark Prins * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 138b9d90aaSMark Prins * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 148b9d90aaSMark Prins * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 158b9d90aaSMark Prins * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 168b9d90aaSMark Prins */ 178b9d90aaSMark Prins 18*c271718aSMark Prinsuse dokuwiki\Logger; 19*c271718aSMark Prins 208b9d90aaSMark Prins/** 218b9d90aaSMark Prins * Syntax tests for the backlinks plugin. 228b9d90aaSMark Prins * 238b9d90aaSMark Prins * @group plugin_backlinks 248b9d90aaSMark Prins * @group plugins 258b9d90aaSMark Prins */ 26*c271718aSMark Prinsclass syntax_exclude_plugin_backlinks_test extends DokuWikiTest 27*c271718aSMark Prins{ 288b9d90aaSMark Prins 298b9d90aaSMark Prins protected $pluginsEnabled = array('backlinks'); 308b9d90aaSMark Prins 318b9d90aaSMark Prins /** 328b9d90aaSMark Prins * copy data. 338b9d90aaSMark Prins */ 34*c271718aSMark Prins public static function setUpBeforeClass(): void 35*c271718aSMark Prins { 368b9d90aaSMark Prins parent::setUpBeforeClass(); 378b9d90aaSMark Prins global $conf; 388b9d90aaSMark Prins $conf['allowdebug'] = 1; 398b9d90aaSMark Prins 408b9d90aaSMark Prins TestUtils::rcopy(TMP_DIR, dirname(__FILE__) . '/data/'); 418b9d90aaSMark Prins 42*c271718aSMark Prins Logger::debug("set up class syntax_plugin_backlinks_test"); 438b9d90aaSMark Prins } 448b9d90aaSMark Prins 45*c271718aSMark Prins public function setUp(): void 46*c271718aSMark Prins { 478b9d90aaSMark Prins parent::setUp(); 488b9d90aaSMark Prins 498b9d90aaSMark Prins global $conf; 508b9d90aaSMark Prins $conf['allowdebug'] = 1; 518b9d90aaSMark Prins $conf['cachetime'] = -1; 52*c271718aSMark Prins $verbose = false; 53*c271718aSMark Prins $force = false; 548b9d90aaSMark Prins 558b9d90aaSMark Prins $data = array(); 568b9d90aaSMark Prins search($data, $conf['datadir'], 'search_allpages', array('skipacl' => true)); 578b9d90aaSMark Prins 588b9d90aaSMark Prins foreach ($data as $val) { 598b9d90aaSMark Prins idx_addPage($val['id'], $verbose, $force); 608b9d90aaSMark Prins } 618b9d90aaSMark Prins 628b9d90aaSMark Prins if ($conf['allowdebug']) { 638b9d90aaSMark Prins touch(DOKU_TMP_DATA . 'cache/debug.log'); 648b9d90aaSMark Prins } 658b9d90aaSMark Prins } 668b9d90aaSMark Prins 67*c271718aSMark Prins public function tearDown(): void 68*c271718aSMark Prins { 698b9d90aaSMark Prins parent::tearDown(); 708b9d90aaSMark Prins 718b9d90aaSMark Prins global $conf; 728b9d90aaSMark Prins // try to get the debug log after running the test, print and clear 738b9d90aaSMark Prins if ($conf['allowdebug']) { 748b9d90aaSMark Prins print "\n"; 758b9d90aaSMark Prins readfile(DOKU_TMP_DATA . 'cache/debug.log'); 768b9d90aaSMark Prins unlink(DOKU_TMP_DATA . 'cache/debug.log'); 778b9d90aaSMark Prins } 788b9d90aaSMark Prins } 798b9d90aaSMark Prins 80*c271718aSMark Prins public function testExclude(): void 81*c271718aSMark Prins { 828b9d90aaSMark Prins $request = new TestRequest(); 838b9d90aaSMark Prins $response = $request->get(array('id' => 'backlinks_exclude_syntax'), '/doku.php'); 848b9d90aaSMark Prins 858b9d90aaSMark Prins $this->assertTrue( 868b9d90aaSMark Prins strpos($response->getContent(), 'Backlinks to what Bob Ross says (excluding exclude namespace)') !== false, 878b9d90aaSMark Prins '"Backlinks to what Bob Ross says (excluding exclude namespace)" was not in the output' 888b9d90aaSMark Prins ); 898b9d90aaSMark Prins 908b9d90aaSMark Prins $this->assertTrue( 918b9d90aaSMark Prins strpos($response->getContent(), 'An excluded link to Bob Ross') == false, 928b9d90aaSMark Prins '"An excluded link to Bob Ross" should not be in the output' 938b9d90aaSMark Prins ); 948b9d90aaSMark Prins 958b9d90aaSMark Prins $doc = phpQuery::newDocument($response->getContent()); 968b9d90aaSMark Prins // look for id="plugin__backlinks" 978b9d90aaSMark Prins $this->assertEquals( 988b9d90aaSMark Prins 1, 998b9d90aaSMark Prins pq('#plugin__backlinks', $doc)->length, 1008b9d90aaSMark Prins 'There should be one backlinks element' 1018b9d90aaSMark Prins ); 1028b9d90aaSMark Prins 1038b9d90aaSMark Prins $wikilinks = pq('#plugin__backlinks ul li', $doc); 104*c271718aSMark Prins Logger::debug('found backlinks', $wikilinks->text()); 1058b9d90aaSMark Prins $this->assertEquals( 1068b9d90aaSMark Prins 3, 1078b9d90aaSMark Prins $wikilinks->contents()->length, 1088b9d90aaSMark Prins 'There should be 3 backlinks' 1098b9d90aaSMark Prins ); 1108b9d90aaSMark Prins 1118b9d90aaSMark Prins $lastlink = pq('a:last', $wikilinks); 112*c271718aSMark Prins Logger::debug("last backlink", $lastlink->text()); 1138b9d90aaSMark Prins $this->assertEquals( 1148b9d90aaSMark Prins 'A link to Bob Ross', 1158b9d90aaSMark Prins $lastlink->text(), 1168b9d90aaSMark Prins 'The last backlink should be "A link to Bob Ross"' 1178b9d90aaSMark Prins ); 1188b9d90aaSMark Prins } 1198b9d90aaSMark Prins} 120