xref: /plugin/backlinks/_test/syntax_exclude.test.php (revision c271718a35f646c00ae56b1d41d7d66ea9a2cfb7)
18b9d90aaSMark Prins<?php
28b9d90aaSMark Prins/*
38b9d90aaSMark Prins * Copyright (c) 2016 Mark C. Prins <mprins@users.sf.net>
48b9d90aaSMark Prins *
58b9d90aaSMark Prins * Permission to use, copy, modify, and distribute this software for any
68b9d90aaSMark Prins * purpose with or without fee is hereby granted, provided that the above
78b9d90aaSMark Prins * copyright notice and this permission notice appear in all copies.
88b9d90aaSMark Prins *
98b9d90aaSMark Prins * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
108b9d90aaSMark Prins * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
118b9d90aaSMark Prins * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
128b9d90aaSMark Prins * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
138b9d90aaSMark Prins * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
148b9d90aaSMark Prins * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
158b9d90aaSMark Prins * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
168b9d90aaSMark Prins */
178b9d90aaSMark Prins
18*c271718aSMark Prinsuse dokuwiki\Logger;
19*c271718aSMark Prins
208b9d90aaSMark Prins/**
218b9d90aaSMark Prins * Syntax tests for the backlinks plugin.
228b9d90aaSMark Prins *
238b9d90aaSMark Prins * @group plugin_backlinks
248b9d90aaSMark Prins * @group plugins
258b9d90aaSMark Prins */
26*c271718aSMark Prinsclass syntax_exclude_plugin_backlinks_test extends DokuWikiTest
27*c271718aSMark Prins{
288b9d90aaSMark Prins
298b9d90aaSMark Prins    protected $pluginsEnabled = array('backlinks');
308b9d90aaSMark Prins
318b9d90aaSMark Prins    /**
328b9d90aaSMark Prins     * copy data.
338b9d90aaSMark Prins     */
34*c271718aSMark Prins    public static function setUpBeforeClass(): void
35*c271718aSMark Prins    {
368b9d90aaSMark Prins        parent::setUpBeforeClass();
378b9d90aaSMark Prins        global $conf;
388b9d90aaSMark Prins        $conf['allowdebug'] = 1;
398b9d90aaSMark Prins
408b9d90aaSMark Prins        TestUtils::rcopy(TMP_DIR, dirname(__FILE__) . '/data/');
418b9d90aaSMark Prins
42*c271718aSMark Prins        Logger::debug("set up class syntax_plugin_backlinks_test");
438b9d90aaSMark Prins    }
448b9d90aaSMark Prins
45*c271718aSMark Prins    public function setUp(): void
46*c271718aSMark Prins    {
478b9d90aaSMark Prins        parent::setUp();
488b9d90aaSMark Prins
498b9d90aaSMark Prins        global $conf;
508b9d90aaSMark Prins        $conf['allowdebug'] = 1;
518b9d90aaSMark Prins        $conf['cachetime'] = -1;
52*c271718aSMark Prins        $verbose = false;
53*c271718aSMark Prins        $force = false;
548b9d90aaSMark Prins
558b9d90aaSMark Prins        $data = array();
568b9d90aaSMark Prins        search($data, $conf['datadir'], 'search_allpages', array('skipacl' => true));
578b9d90aaSMark Prins
588b9d90aaSMark Prins        foreach ($data as $val) {
598b9d90aaSMark Prins            idx_addPage($val['id'], $verbose, $force);
608b9d90aaSMark Prins        }
618b9d90aaSMark Prins
628b9d90aaSMark Prins        if ($conf['allowdebug']) {
638b9d90aaSMark Prins            touch(DOKU_TMP_DATA . 'cache/debug.log');
648b9d90aaSMark Prins        }
658b9d90aaSMark Prins    }
668b9d90aaSMark Prins
67*c271718aSMark Prins    public function tearDown(): void
68*c271718aSMark Prins    {
698b9d90aaSMark Prins        parent::tearDown();
708b9d90aaSMark Prins
718b9d90aaSMark Prins        global $conf;
728b9d90aaSMark Prins        // try to get the debug log after running the test, print and clear
738b9d90aaSMark Prins        if ($conf['allowdebug']) {
748b9d90aaSMark Prins            print "\n";
758b9d90aaSMark Prins            readfile(DOKU_TMP_DATA . 'cache/debug.log');
768b9d90aaSMark Prins            unlink(DOKU_TMP_DATA . 'cache/debug.log');
778b9d90aaSMark Prins        }
788b9d90aaSMark Prins    }
798b9d90aaSMark Prins
80*c271718aSMark Prins    public function testExclude(): void
81*c271718aSMark Prins    {
828b9d90aaSMark Prins        $request = new TestRequest();
838b9d90aaSMark Prins        $response = $request->get(array('id' => 'backlinks_exclude_syntax'), '/doku.php');
848b9d90aaSMark Prins
858b9d90aaSMark Prins        $this->assertTrue(
868b9d90aaSMark Prins            strpos($response->getContent(), 'Backlinks to what Bob Ross says (excluding exclude namespace)') !== false,
878b9d90aaSMark Prins            '"Backlinks to what Bob Ross says (excluding exclude namespace)" was not in the output'
888b9d90aaSMark Prins        );
898b9d90aaSMark Prins
908b9d90aaSMark Prins        $this->assertTrue(
918b9d90aaSMark Prins            strpos($response->getContent(), 'An excluded link to Bob Ross') == false,
928b9d90aaSMark Prins            '"An excluded link to Bob Ross" should not be in the output'
938b9d90aaSMark Prins        );
948b9d90aaSMark Prins
958b9d90aaSMark Prins        $doc = phpQuery::newDocument($response->getContent());
968b9d90aaSMark Prins        // look for id="plugin__backlinks"
978b9d90aaSMark Prins        $this->assertEquals(
988b9d90aaSMark Prins            1,
998b9d90aaSMark Prins            pq('#plugin__backlinks', $doc)->length,
1008b9d90aaSMark Prins            'There should be one backlinks element'
1018b9d90aaSMark Prins        );
1028b9d90aaSMark Prins
1038b9d90aaSMark Prins        $wikilinks = pq('#plugin__backlinks ul li', $doc);
104*c271718aSMark Prins        Logger::debug('found backlinks', $wikilinks->text());
1058b9d90aaSMark Prins        $this->assertEquals(
1068b9d90aaSMark Prins            3,
1078b9d90aaSMark Prins            $wikilinks->contents()->length,
1088b9d90aaSMark Prins            'There should be 3 backlinks'
1098b9d90aaSMark Prins        );
1108b9d90aaSMark Prins
1118b9d90aaSMark Prins        $lastlink = pq('a:last', $wikilinks);
112*c271718aSMark Prins        Logger::debug("last backlink", $lastlink->text());
1138b9d90aaSMark Prins        $this->assertEquals(
1148b9d90aaSMark Prins            'A link to Bob Ross',
1158b9d90aaSMark Prins            $lastlink->text(),
1168b9d90aaSMark Prins            'The last backlink should be "A link to Bob Ross"'
1178b9d90aaSMark Prins        );
1188b9d90aaSMark Prins    }
1198b9d90aaSMark Prins}
120