]> git.immae.eu Git - github/shaarli/Shaarli.git/blame - tests/plugins/PluginArchiveorgTest.php
Compatibility with PHPUnit 9
[github/shaarli/Shaarli.git] / tests / plugins / PluginArchiveorgTest.php
CommitLineData
9a364c28 1<?php
76fe68d9 2
95854417 3namespace Shaarli\Plugin\Archiveorg;
9a364c28
A
4
5/**
6 * PluginArchiveorgTest.php
7 */
8
e1850388 9use Shaarli\Plugin\PluginManager;
a5a9cf23 10use Shaarli\TestCase;
e1850388 11
9a364c28
A
12require_once 'plugins/archiveorg/archiveorg.php';
13
14/**
5e148f8a
T
15 * Class PluginArchiveorgTest
16 * Unit test for the archiveorg plugin
9a364c28 17 */
76fe68d9 18class PluginArchiveorgTest extends TestCase
9a364c28 19{
76fe68d9
A
20 protected $savedScriptName;
21
9a364c28
A
22 /**
23 * Reset plugin path
24 */
76fe68d9 25 public function setUp(): void
9a364c28
A
26 {
27 PluginManager::$PLUGINS_PATH = 'plugins';
76fe68d9
A
28
29 // plugins manipulate global vars
30 $_SERVER['SERVER_PORT'] = '80';
31 $_SERVER['SERVER_NAME'] = 'shaarli.shaarli';
32 $this->savedScriptName = $_SERVER['SCRIPT_NAME'] ?? null;
33 $_SERVER['SCRIPT_NAME'] = '/index.php';
34 }
35
36 public function tearDown(): void
37 {
38 unset($_SERVER['SERVER_PORT']);
39 unset($_SERVER['SERVER_NAME']);
40 $_SERVER['SCRIPT_NAME'] = $this->savedScriptName;
9a364c28
A
41 }
42
43 /**
e26e2060 44 * Test render_linklist hook on external bookmarks.
9a364c28 45 */
76fe68d9 46 public function testArchiveorgLinklistOnExternalLinks(): void
9a364c28
A
47 {
48 $str = 'http://randomstr.com/test';
5e148f8a 49
9a364c28
A
50 $data = array(
51 'title' => $str,
52 'links' => array(
53 array(
54 'url' => $str,
5e148f8a
T
55 'private' => 0,
56 'real_url' => $str
9a364c28
A
57 )
58 )
59 );
60
61 $data = hook_archiveorg_render_linklist($data);
5e148f8a 62
9a364c28
A
63 $link = $data['links'][0];
64 // data shouldn't be altered
65 $this->assertEquals($str, $data['title']);
66 $this->assertEquals($str, $link['url']);
67
68 // plugin data
69 $this->assertEquals(1, count($link['link_plugin']));
70 $this->assertNotFalse(strpos($link['link_plugin'][0], $str));
5e148f8a
T
71 }
72
73 /**
e26e2060 74 * Test render_linklist hook on internal bookmarks.
5e148f8a 75 */
76fe68d9 76 public function testArchiveorgLinklistOnInternalLinks(): void
5e148f8a 77 {
76fe68d9
A
78 $internalLink1 = 'http://shaarli.shaarli/shaare/qvMAqg';
79 $internalLinkRealURL1 = '/shaare/qvMAqg';
5e148f8a 80
76fe68d9
A
81 $internalLink2 = 'http://shaarli.shaarli/shaare/2_7zww';
82 $internalLinkRealURL2 = '/shaare/2_7zww';
5e148f8a 83
76fe68d9
A
84 $internalLink3 = 'http://shaarli.shaarli/shaare/z7u-_Q';
85 $internalLinkRealURL3 = '/shaare/z7u-_Q';
5e148f8a
T
86
87 $data = array(
88 'title' => $internalLink1,
89 'links' => array(
90 array(
91 'url' => $internalLink1,
92 'private' => 0,
93 'real_url' => $internalLinkRealURL1
94 ),
95 array(
96 'url' => $internalLink1,
97 'private' => 1,
98 'real_url' => $internalLinkRealURL1
99 ),
100 array(
101 'url' => $internalLink2,
102 'private' => 0,
103 'real_url' => $internalLinkRealURL2
104 ),
105 array(
106 'url' => $internalLink2,
107 'private' => 1,
108 'real_url' => $internalLinkRealURL2
109 ),
110 array(
111 'url' => $internalLink3,
112 'private' => 0,
113 'real_url' => $internalLinkRealURL3
114 ),
115 array(
116 'url' => $internalLink3,
117 'private' => 1,
118 'real_url' => $internalLinkRealURL3
119 )
120 )
121 );
122
5e148f8a
T
123 $data = hook_archiveorg_render_linklist($data);
124
125 // Case n°1: first link type, public
126 $link = $data['links'][0];
127
128 $this->assertEquals(1, count($link['link_plugin']));
129 $this->assertNotFalse(strpos($link['link_plugin'][0], $internalLink1));
130
131 // Case n°2: first link type, private
132 $link = $data['links'][1];
133
134 $this->assertArrayNotHasKey('link_plugin', $link);
135
136 // Case n°3: second link type, public
137 $link = $data['links'][2];
138
139 $this->assertEquals(1, count($link['link_plugin']));
140 $this->assertNotFalse(strpos($link['link_plugin'][0], $internalLink2));
141
142 // Case n°4: second link type, private
143 $link = $data['links'][3];
144
145 $this->assertArrayNotHasKey('link_plugin', $link);
146
147 // Case n°5: third link type, public
148 $link = $data['links'][4];
149
150 $this->assertEquals(1, count($link['link_plugin']));
151 $this->assertNotFalse(strpos($link['link_plugin'][0], $internalLink3));
152
153 // Case n°6: third link type, private
154 $link = $data['links'][5];
155
156 $this->assertArrayNotHasKey('link_plugin', $link);
9a364c28
A
157 }
158}