xref: /plugin/backlinks/_test/syntax_include.test.php (revision 8b9d90aa1e3213cd1241b59e5fdcac2ff45f5445)
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