xref: /plugin/backlinks/_test/syntax_include_deep.test.php (revision 85f2e777f0db1e27aeb06af6d0fb77316c60222a)
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