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