3 namespace Shaarli\Plugin\Archiveorg
;
6 * PluginArchiveorgTest.php
9 use Shaarli\Plugin\PluginManager
;
12 require_once 'plugins/archiveorg/archiveorg.php';
15 * Class PluginArchiveorgTest
16 * Unit test for the archiveorg plugin
18 class PluginArchiveorgTest
extends TestCase
20 protected $savedScriptName;
25 public function setUp(): void
27 PluginManager
::$PLUGINS_PATH = 'plugins';
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';
36 public function tearDown(): void
38 unset($_SERVER['SERVER_PORT']);
39 unset($_SERVER['SERVER_NAME']);
40 $_SERVER['SCRIPT_NAME'] = $this->savedScriptName
;
44 * Test render_linklist hook on external bookmarks.
46 public function testArchiveorgLinklistOnExternalLinks(): void
48 $str = 'http://randomstr.com/test';
61 $data = hook_archiveorg_render_linklist($data);
63 $link = $data['links'][0];
64 // data shouldn't be altered
65 $this->assertEquals($str, $data['title']);
66 $this->assertEquals($str, $link['url']);
69 $this->assertEquals(1, count($link['link_plugin']));
70 $this->assertNotFalse(strpos($link['link_plugin'][0], $str));
74 * Test render_linklist hook on internal bookmarks.
76 public function testArchiveorgLinklistOnInternalLinks(): void
78 $internalLink1 = 'http://shaarli.shaarli/shaare/qvMAqg';
79 $internalLinkRealURL1 = '/shaare/qvMAqg';
81 $internalLink2 = 'http://shaarli.shaarli/shaare/2_7zww';
82 $internalLinkRealURL2 = '/shaare/2_7zww';
84 $internalLink3 = 'http://shaarli.shaarli/shaare/z7u-_Q';
85 $internalLinkRealURL3 = '/shaare/z7u-_Q';
88 'title' => $internalLink1,
91 'url' => $internalLink1,
93 'real_url' => $internalLinkRealURL1
96 'url' => $internalLink1,
98 'real_url' => $internalLinkRealURL1
101 'url' => $internalLink2,
103 'real_url' => $internalLinkRealURL2
106 'url' => $internalLink2,
108 'real_url' => $internalLinkRealURL2
111 'url' => $internalLink3,
113 'real_url' => $internalLinkRealURL3
116 'url' => $internalLink3,
118 'real_url' => $internalLinkRealURL3
123 $data = hook_archiveorg_render_linklist($data);
125 // Case n°1: first link type, public
126 $link = $data['links'][0];
128 $this->assertEquals(1, count($link['link_plugin']));
129 $this->assertNotFalse(strpos($link['link_plugin'][0], $internalLink1));
131 // Case n°2: first link type, private
132 $link = $data['links'][1];
134 $this->assertArrayNotHasKey('link_plugin', $link);
136 // Case n°3: second link type, public
137 $link = $data['links'][2];
139 $this->assertEquals(1, count($link['link_plugin']));
140 $this->assertNotFalse(strpos($link['link_plugin'][0], $internalLink2));
142 // Case n°4: second link type, private
143 $link = $data['links'][3];
145 $this->assertArrayNotHasKey('link_plugin', $link);
147 // Case n°5: third link type, public
148 $link = $data['links'][4];
150 $this->assertEquals(1, count($link['link_plugin']));
151 $this->assertNotFalse(strpos($link['link_plugin'][0], $internalLink3));
153 // Case n°6: third link type, private
154 $link = $data['links'][5];
156 $this->assertArrayNotHasKey('link_plugin', $link);