1
|
|
|
<?php |
2
|
|
|
/* |
3
|
|
|
* Copyright (c) 2016 Mark C. Prins <[email protected]> |
4
|
|
|
* |
5
|
|
|
* Permission to use, copy, modify, and distribute this software for any |
6
|
|
|
* purpose with or without fee is hereby granted, provided that the above |
7
|
|
|
* copyright notice and this permission notice appear in all copies. |
8
|
|
|
* |
9
|
|
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
10
|
|
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
11
|
|
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
12
|
|
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
13
|
|
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
14
|
|
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
15
|
|
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
16
|
|
|
*/ |
17
|
|
|
|
18
|
|
|
/** |
19
|
|
|
* Syntax tests for the backlinks plugin. |
20
|
|
|
* |
21
|
|
|
* @group plugin_backlinks |
22
|
|
|
* @group plugins |
23
|
|
|
*/ |
24
|
|
View Code Duplication |
class syntax_include_deep_plugin_backlinks_test extends DokuWikiTest { |
|
|
|
|
25
|
|
|
|
26
|
|
|
protected $pluginsEnabled = array('backlinks'); |
27
|
|
|
|
28
|
|
|
/** |
29
|
|
|
* copy data. |
30
|
|
|
*/ |
31
|
|
|
public static function setUpBeforeClass(){ |
32
|
|
|
parent::setUpBeforeClass(); |
33
|
|
|
global $conf; |
34
|
|
|
$conf['allowdebug'] = 1; |
35
|
|
|
|
36
|
|
|
TestUtils::rcopy(TMP_DIR, dirname(__FILE__) . '/data/'); |
37
|
|
|
|
38
|
|
|
dbglog("\nset up class syntax_plugin_backlinks_test"); |
39
|
|
|
} |
40
|
|
|
|
41
|
|
|
function setUp() { |
|
|
|
|
42
|
|
|
parent::setUp(); |
43
|
|
|
|
44
|
|
|
global $conf; |
45
|
|
|
$conf['allowdebug'] = 1; |
46
|
|
|
$conf['cachetime'] = -1; |
47
|
|
|
|
48
|
|
|
$data = array(); |
49
|
|
|
search($data, $conf['datadir'], 'search_allpages', array('skipacl' => true)); |
50
|
|
|
|
51
|
|
|
//dbglog($data, "pages for indexing"); |
|
|
|
|
52
|
|
|
|
53
|
|
|
$verbose = false; |
54
|
|
|
$force = false; |
55
|
|
|
foreach($data as $val) { |
56
|
|
|
idx_addPage($val['id'], $verbose, $force); |
57
|
|
|
} |
58
|
|
|
|
59
|
|
|
if($conf['allowdebug']) { |
60
|
|
|
touch(DOKU_TMP_DATA.'cache/debug.log'); |
61
|
|
|
} |
62
|
|
|
} |
63
|
|
|
|
64
|
|
|
public function tearDown() { |
65
|
|
|
parent::tearDown(); |
66
|
|
|
|
67
|
|
|
global $conf; |
68
|
|
|
// try to get the debug log after running the test, print and clear |
69
|
|
|
if($conf['allowdebug']) { |
70
|
|
|
print "\n"; |
71
|
|
|
readfile(DOKU_TMP_DATA.'cache/debug.log'); |
72
|
|
|
unlink(DOKU_TMP_DATA.'cache/debug.log'); |
73
|
|
|
} |
74
|
|
|
} |
75
|
|
|
|
76
|
|
|
public function testInclude() { |
77
|
|
|
$request = new TestRequest(); |
78
|
|
|
$response = $request->get(array('id'=>'mmm:nnn:ooo:start'), '/doku.php'); |
79
|
|
|
|
80
|
|
|
$this->assertTrue( |
81
|
|
|
strpos($response->getContent(), 'Backlinks from pages in /aaa/bbb/cc/') !== false, |
82
|
|
|
'"Backlinks from pages in /aaa/bbb/cc/" was not in the output' |
83
|
|
|
); |
84
|
|
|
|
85
|
|
|
$this->assertFalse( |
86
|
|
|
strpos($response->getContent(), 'linking to a page form aaa') !== false, |
87
|
|
|
'"linking to a page form aaa" should not be in the output' |
88
|
|
|
); |
89
|
|
|
|
90
|
|
|
|
91
|
|
|
|
92
|
|
|
$doc = phpQuery::newDocument($response->getContent()); |
93
|
|
|
// look for id="plugin__backlinks" |
94
|
|
|
$this->assertEquals( |
95
|
|
|
1, |
96
|
|
|
pq('#plugin__backlinks', $doc)->length, |
97
|
|
|
'There should be one backlinks element' |
98
|
|
|
); |
99
|
|
|
|
100
|
|
|
$wikilinks = pq('#plugin__backlinks ul li', $doc); |
101
|
|
|
dbglog($wikilinks->text(), 'found backlinks'); |
102
|
|
|
$this->assertEquals( |
103
|
|
|
5, |
104
|
|
|
$wikilinks->contents()->length, |
105
|
|
|
'There should be 5 backlinks' |
106
|
|
|
); |
107
|
|
|
|
108
|
|
|
$lastlink = pq('a:last',$wikilinks); |
109
|
|
|
dbglog($lastlink->text(),"last backlink"); |
110
|
|
|
$this->assertEquals( |
111
|
|
|
$lastlink->text(), |
112
|
|
|
'linking to a namespace', |
113
|
|
|
'The last backlink should be "linking to a namespace"' |
114
|
|
|
); |
115
|
|
|
} |
116
|
|
|
} |
117
|
|
|
|
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.
You can also find more detailed suggestions in the “Code” section of your repository.