1*8b9d90aaSMark Prins<?php 2*8b9d90aaSMark Prins/* 3*8b9d90aaSMark Prins * Copyright (c) 2016 Mark C. Prins <mprins@users.sf.net> 4*8b9d90aaSMark Prins * 5*8b9d90aaSMark Prins * Permission to use, copy, modify, and distribute this software for any 6*8b9d90aaSMark Prins * purpose with or without fee is hereby granted, provided that the above 7*8b9d90aaSMark Prins * copyright notice and this permission notice appear in all copies. 8*8b9d90aaSMark Prins * 9*8b9d90aaSMark Prins * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10*8b9d90aaSMark Prins * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11*8b9d90aaSMark Prins * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12*8b9d90aaSMark Prins * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13*8b9d90aaSMark Prins * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14*8b9d90aaSMark Prins * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15*8b9d90aaSMark Prins * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16*8b9d90aaSMark Prins */ 17*8b9d90aaSMark Prins 18*8b9d90aaSMark Prins/** 19*8b9d90aaSMark Prins * Syntax tests for the backlinks plugin. 20*8b9d90aaSMark Prins * 21*8b9d90aaSMark Prins * @group plugin_backlinks 22*8b9d90aaSMark Prins * @group plugins 23*8b9d90aaSMark Prins */ 24*8b9d90aaSMark Prinsclass syntax_include_plugin_backlinks_test extends DokuWikiTest { 25*8b9d90aaSMark Prins 26*8b9d90aaSMark Prins protected $pluginsEnabled = array('backlinks'); 27*8b9d90aaSMark Prins 28*8b9d90aaSMark Prins /** 29*8b9d90aaSMark Prins * copy data. 30*8b9d90aaSMark Prins */ 31*8b9d90aaSMark Prins public static function setUpBeforeClass(){ 32*8b9d90aaSMark Prins parent::setUpBeforeClass(); 33*8b9d90aaSMark Prins global $conf; 34*8b9d90aaSMark Prins $conf['allowdebug'] = 1; 35*8b9d90aaSMark Prins 36*8b9d90aaSMark Prins TestUtils::rcopy(TMP_DIR, dirname(__FILE__) . '/data/'); 37*8b9d90aaSMark Prins 38*8b9d90aaSMark Prins dbglog("\nset up class syntax_plugin_backlinks_test"); 39*8b9d90aaSMark Prins } 40*8b9d90aaSMark Prins 41*8b9d90aaSMark Prins function setUp() { 42*8b9d90aaSMark Prins parent::setUp(); 43*8b9d90aaSMark Prins 44*8b9d90aaSMark Prins global $conf; 45*8b9d90aaSMark Prins $conf['allowdebug'] = 1; 46*8b9d90aaSMark Prins $conf['cachetime'] = -1; 47*8b9d90aaSMark Prins 48*8b9d90aaSMark Prins $data = array(); 49*8b9d90aaSMark Prins search($data, $conf['datadir'], 'search_allpages', array('skipacl' => true)); 50*8b9d90aaSMark Prins 51*8b9d90aaSMark Prins //dbglog($data, "pages for indexing"); 52*8b9d90aaSMark Prins 53*8b9d90aaSMark Prins $verbose = false; 54*8b9d90aaSMark Prins $force = false; 55*8b9d90aaSMark Prins foreach($data as $val) { 56*8b9d90aaSMark Prins idx_addPage($val['id'], $verbose, $force); 57*8b9d90aaSMark Prins } 58*8b9d90aaSMark Prins 59*8b9d90aaSMark Prins if($conf['allowdebug']) { 60*8b9d90aaSMark Prins touch(DOKU_TMP_DATA.'cache/debug.log'); 61*8b9d90aaSMark Prins } 62*8b9d90aaSMark Prins } 63*8b9d90aaSMark Prins 64*8b9d90aaSMark Prins public function tearDown() { 65*8b9d90aaSMark Prins parent::tearDown(); 66*8b9d90aaSMark Prins 67*8b9d90aaSMark Prins global $conf; 68*8b9d90aaSMark Prins // try to get the debug log after running the test, print and clear 69*8b9d90aaSMark Prins if($conf['allowdebug']) { 70*8b9d90aaSMark Prins print "\n"; 71*8b9d90aaSMark Prins readfile(DOKU_TMP_DATA.'cache/debug.log'); 72*8b9d90aaSMark Prins unlink(DOKU_TMP_DATA.'cache/debug.log'); 73*8b9d90aaSMark Prins } 74*8b9d90aaSMark Prins } 75*8b9d90aaSMark Prins 76*8b9d90aaSMark Prins public function testInclude() { 77*8b9d90aaSMark Prins $request = new TestRequest(); 78*8b9d90aaSMark Prins $response = $request->get(array('id'=>'backlinks_include_syntax'), '/doku.php'); 79*8b9d90aaSMark Prins 80*8b9d90aaSMark Prins $this->assertTrue( 81*8b9d90aaSMark Prins strpos($response->getContent(), 'Backlinks to what Bob Ross says (including only)') !== false, 82*8b9d90aaSMark Prins '"Backlinks to what Bob Ross says (including only)" was not in the output' 83*8b9d90aaSMark Prins ); 84*8b9d90aaSMark Prins 85*8b9d90aaSMark Prins $doc = phpQuery::newDocument($response->getContent()); 86*8b9d90aaSMark Prins // look for id="plugin__backlinks" 87*8b9d90aaSMark Prins $this->assertEquals( 88*8b9d90aaSMark Prins 1, 89*8b9d90aaSMark Prins pq('#plugin__backlinks', $doc)->length, 90*8b9d90aaSMark Prins 'There should be one backlinks element' 91*8b9d90aaSMark Prins ); 92*8b9d90aaSMark Prins 93*8b9d90aaSMark Prins $wikilinks = pq('#plugin__backlinks ul li', $doc); 94*8b9d90aaSMark Prins dbglog($wikilinks->text(), 'found backlinks'); 95*8b9d90aaSMark Prins $this->assertEquals( 96*8b9d90aaSMark Prins 1, 97*8b9d90aaSMark Prins $wikilinks->contents()->length, 98*8b9d90aaSMark Prins 'There should be 1 backlink' 99*8b9d90aaSMark Prins ); 100*8b9d90aaSMark Prins 101*8b9d90aaSMark Prins $lastlink = pq('a:last',$wikilinks); 102*8b9d90aaSMark Prins dbglog($lastlink->text(),"last backlink"); 103*8b9d90aaSMark Prins $this->assertEquals( 104*8b9d90aaSMark Prins $lastlink->text(), 105*8b9d90aaSMark Prins 'An included link to Bob Ross', 106*8b9d90aaSMark Prins 'The last backlink should be "An included link to Bob Ross"' 107*8b9d90aaSMark Prins ); 108*8b9d90aaSMark Prins } 109*8b9d90aaSMark Prins} 110