xref: /plugin/backlinks/_test/syntax.test.php (revision 52fa4f272a2e4333b8f0a813a57d59d386575820)
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