1*52fa4f27SMark Prins<?php 2*52fa4f27SMark Prins/* 3*52fa4f27SMark Prins * Copyright (c) 2016 Mark C. Prins <mprins@users.sf.net> 4*52fa4f27SMark Prins * 5*52fa4f27SMark Prins * Permission to use, copy, modify, and distribute this software for any 6*52fa4f27SMark Prins * purpose with or without fee is hereby granted, provided that the above 7*52fa4f27SMark Prins * copyright notice and this permission notice appear in all copies. 8*52fa4f27SMark Prins * 9*52fa4f27SMark Prins * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10*52fa4f27SMark Prins * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11*52fa4f27SMark Prins * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12*52fa4f27SMark Prins * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13*52fa4f27SMark Prins * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14*52fa4f27SMark Prins * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15*52fa4f27SMark Prins * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16*52fa4f27SMark Prins */ 17*52fa4f27SMark Prins 18*52fa4f27SMark Prins/** 19*52fa4f27SMark Prins * Syntax tests for the backlinks plugin. 20*52fa4f27SMark Prins * 21*52fa4f27SMark Prins * @group plugin_backlinks 22*52fa4f27SMark Prins * @group plugins 23*52fa4f27SMark Prins */ 24*52fa4f27SMark Prinsclass syntax_plugin_backlinks_test extends DokuWikiTest { 25*52fa4f27SMark Prins 26*52fa4f27SMark Prins protected $pluginsEnabled = array('backlinks'); 27*52fa4f27SMark Prins 28*52fa4f27SMark Prins /** 29*52fa4f27SMark Prins * copy data and add pages to the index. 30*52fa4f27SMark Prins */ 31*52fa4f27SMark Prins public static function setUpBeforeClass(){ 32*52fa4f27SMark Prins parent::setUpBeforeClass(); 33*52fa4f27SMark Prins global $conf; 34*52fa4f27SMark Prins 35*52fa4f27SMark Prins TestUtils::rcopy(TMP_DIR, dirname(__FILE__) . '/data/'); 36*52fa4f27SMark Prins 37*52fa4f27SMark Prins dbglog(scandir(DOKU_TMP_DATA.'index/'),"Index dir (after copy)"); 38*52fa4f27SMark Prins dbglog(scandir(DOKU_TMP_DATA.'pages/'),"Pages dir (before test)"); 39*52fa4f27SMark Prins } 40*52fa4f27SMark Prins 41*52fa4f27SMark Prins function setUp() { 42*52fa4f27SMark Prins global $conf; 43*52fa4f27SMark Prins //$this->pluginsEnabled[] = 'backlinks'; 44*52fa4f27SMark Prins parent::setUp(); 45*52fa4f27SMark Prins 46*52fa4f27SMark Prins 47*52fa4f27SMark Prins $conf['allowdebug'] = 1; 48*52fa4f27SMark Prins $conf['cachetime'] = -1; 49*52fa4f27SMark Prins 50*52fa4f27SMark Prins $data = array(); 51*52fa4f27SMark Prins search($data, $conf['datadir'], 'search_allpages', array('skipacl' => true)); 52*52fa4f27SMark Prins 53*52fa4f27SMark Prins dbglog($data, "pages for indexing"); 54*52fa4f27SMark Prins 55*52fa4f27SMark Prins $verbose = false; 56*52fa4f27SMark Prins $force = false; 57*52fa4f27SMark Prins //foreach($data as $val) { 58*52fa4f27SMark Prins // idx_addPage($val['id'], $verbose, $force); 59*52fa4f27SMark Prins //} 60*52fa4f27SMark Prins idx_addPage('wiki:dokuwiki', $verbose, $force); 61*52fa4f27SMark Prins idx_addPage('bob_ross_says', $verbose, $force); 62*52fa4f27SMark Prins idx_addPage('link', $verbose, $force); 63*52fa4f27SMark Prins idx_addPage('backlinks_syntax', $verbose, $force); 64*52fa4f27SMark Prins } 65*52fa4f27SMark Prins 66*52fa4f27SMark Prins public function tearDown() { 67*52fa4f27SMark Prins global $conf; 68*52fa4f27SMark Prins parent::tearDown(); 69*52fa4f27SMark Prins 70*52fa4f27SMark Prins // try to get the debug log 71*52fa4f27SMark Prins 72*52fa4f27SMark Prins //$log = file_get_contents($conf['cachedir'].'/debug.log'); 73*52fa4f27SMark Prins $log = file_get_contents(DOKU_TMP_DATA.'/cache/debug.log'); 74*52fa4f27SMark Prins if(!$log) { 75*52fa4f27SMark Prins print_r($log); 76*52fa4f27SMark Prins unlink($conf['cachedir'].'/debug.log'); 77*52fa4f27SMark Prins } 78*52fa4f27SMark Prins } 79*52fa4f27SMark Prins 80*52fa4f27SMark Prins public function testIndex() { 81*52fa4f27SMark Prins $indexer = idx_get_indexer(); 82*52fa4f27SMark Prins $query = array('Ross'); 83*52fa4f27SMark Prins 84*52fa4f27SMark Prins print_r(idx_lookup($query)); 85*52fa4f27SMark Prins 86*52fa4f27SMark Prins $this->assertEquals( 87*52fa4f27SMark Prins array('Ross' => array('link' => 1)), 88*52fa4f27SMark Prins idx_lookup($query) 89*52fa4f27SMark Prins ); 90*52fa4f27SMark Prins 91*52fa4f27SMark Prins } 92*52fa4f27SMark Prins 93*52fa4f27SMark Prins public function testDokuWikiPage() { 94*52fa4f27SMark Prins $request = new TestRequest(); 95*52fa4f27SMark Prins $response = $request->get(array('id'=>'wiki:dokuwiki'), '/doku.php'); 96*52fa4f27SMark Prins $this->assertTrue( 97*52fa4f27SMark Prins strpos($response->getContent(), 'DokuWiki') !== false, 98*52fa4f27SMark Prins 'DokuWiki was not a word in the output' 99*52fa4f27SMark Prins ); 100*52fa4f27SMark Prins } 101*52fa4f27SMark Prins 102*52fa4f27SMark Prins public function testLinksPage() { 103*52fa4f27SMark Prins $request = new TestRequest(); 104*52fa4f27SMark Prins $response = $request->get(array('id'=>'link'), '/doku.php'); 105*52fa4f27SMark Prins 106*52fa4f27SMark Prins $this->assertTrue( 107*52fa4f27SMark Prins strpos($response->getContent(), 'A link to Bob Ross') !== false, 108*52fa4f27SMark Prins 'A link to Bob Ross was not in the output' 109*52fa4f27SMark Prins ); 110*52fa4f27SMark Prins } 111*52fa4f27SMark Prins 112*52fa4f27SMark Prins public function testStoryPage() { 113*52fa4f27SMark Prins $request = new TestRequest(); 114*52fa4f27SMark Prins $response = $request->get(array('id'=>'bob_ross_says'), '/doku.php'); 115*52fa4f27SMark Prins 116*52fa4f27SMark Prins $this->assertTrue( 117*52fa4f27SMark Prins strpos($response->getContent(), 'Bob Ross says') !== false, 118*52fa4f27SMark Prins 'Bob Ross says was not in the output' 119*52fa4f27SMark Prins ); 120*52fa4f27SMark Prins } 121*52fa4f27SMark Prins 122*52fa4f27SMark Prins public function testBacklinks() { 123*52fa4f27SMark Prins $request = new TestRequest(); 124*52fa4f27SMark Prins $response = $request->get(array('id'=>'backlinks_syntax'), '/doku.php'); 125*52fa4f27SMark Prins 126*52fa4f27SMark Prins $this->assertTrue( 127*52fa4f27SMark Prins strpos($response->getContent(), 'Backlinks to what Bob Ross says') !== false, 128*52fa4f27SMark Prins '"Backlinks to what Bob Ross says" was not in the output' 129*52fa4f27SMark Prins ); 130*52fa4f27SMark Prins 131*52fa4f27SMark Prins $doc = phpQuery::newDocument($response->getContent()); 132*52fa4f27SMark Prins //look for id="plugin__backlinks" 133*52fa4f27SMark Prins $this->assertEquals(1, pq('#plugin__backlinks', $doc)->length, 134*52fa4f27SMark Prins 'There should be one backlinks element'); 135*52fa4f27SMark Prins 136*52fa4f27SMark Prins $wikilink = pq('.idx .li .wikilink1', $doc); 137*52fa4f27SMark Prins $this->assertEquals(4, $wikilink->length, 'There should be 4 backlinks'); 138*52fa4f27SMark Prins 139*52fa4f27SMark Prins dbglog(pq($wikilink->contents()[0], $doc),"wikilink[0]"); 140*52fa4f27SMark Prins $this->assertEquals($wikilink->contents()[3],'A link to Bob Ross', 141*52fa4f27SMark Prins 'The last backlink should be a link to Bob Ross'); 142*52fa4f27SMark Prins } 143*52fa4f27SMark Prins} 144