]> git.mxchange.org Git - friendica.git/blob - tests/src/Protocol/ActivityPub/ProcessorTest.php
Merge pull request #10771 from fabrixxm/issue/10766
[friendica.git] / tests / src / Protocol / ActivityPub / ProcessorTest.php
1 <?php
2
3 namespace Friendica\Test\src\Protocol\ActivityPub;
4
5 use PHPUnit\Framework\TestCase;
6
7 class ProcessorTest extends TestCase
8 {
9         public function dataNormalizeMentionLinks(): array
10         {
11                 return [
12                         'one-link-@' => [
13                                 'expected' => '@[url=https://example.com]Example[/url]',
14                                 'body'     => '[url=https://example.com]@Example[/url]',
15                         ],
16                         'one-link-#' => [
17                                 'expected' => '#[url=https://example.com]Example[/url]',
18                                 'body'     => '[url=https://example.com]#Example[/url]',
19                         ],
20                         'one-link-!' => [
21                                 'expected' => '![url=https://example.com]Example[/url]',
22                                 'body'     => '[url=https://example.com]!Example[/url]',
23                         ],
24                         'wrong-hash-char' => [
25                                 'expected' => '[url=https://example.com]%Example[/url]',
26                                 'body'     => '[url=https://example.com]%Example[/url]',
27                         ],
28                         'multiple-links' => [
29                                 'expected' => '@[url=https://example.com]Example[/url] #[url=https://example.com]Example[/url] ![url=https://example.com]Example[/url]',
30                                 'body'     => '[url=https://example.com]@Example[/url] [url=https://example.com]#Example[/url] [url=https://example.com]!Example[/url]',
31                         ],
32                         'already-correct-format' => [
33                                 'expected' => '@[url=https://example.com]Example[/url] #[url=https://example.com]Example[/url] ![url=https://example.com]Example[/url]',
34                                 'body'     => '@[url=https://example.com]Example[/url] #[url=https://example.com]Example[/url] ![url=https://example.com]Example[/url]',
35                         ],
36                         'mixed-format' => [
37                                 'expected' => '@[url=https://example.com]Example[/url] #[url=https://example.com]Example[/url] ![url=https://example.com]Example[/url] @[url=https://example.com]Example[/url] #[url=https://example.com]Example[/url] ![url=https://example.com]Example[/url]',
38                                 'body'     => '[url=https://example.com]@Example[/url] [url=https://example.com]#Example[/url] [url=https://example.com]!Example[/url] @[url=https://example.com]Example[/url] #[url=https://example.com]Example[/url] ![url=https://example.com]Example[/url]',
39                         ],
40                 ];
41         }
42
43         /**
44          * @dataProvider dataNormalizeMentionLinks
45          *
46          * @param string $expected
47          * @param string $body
48          */
49         public function testNormalizeMentionLinks(string $expected, string $body)
50         {
51                 $this->assertEquals($expected, ProcessorMock::normalizeMentionLinks($body));
52         }
53
54         public function dataAddMentionLinks(): array
55         {
56                 return [
57                         'issue-10603' => [
58                                 'expected' => '@[url=https://social.wake.st/users/liaizon]liaizon@social.wake.st[/url] @[url=https://friendica.mrpetovan.com/profile/hypolite]hypolite@friendica.mrpetovan.com[/url] yes<br /><br />',
59                                 'body'     => '@liaizon@social.wake.st @hypolite@friendica.mrpetovan.com yes<br /><br />',
60                                 'tags'     => [
61                                         [
62                                                 'type' => 'Mention',
63                                                 'href' => 'https://social.wake.st/users/liaizon',
64                                                 'name' => '@liaizon@social.wake.st'
65                                         ],
66                                         [
67                                                 'type' => 'Mention',
68                                                 'href' => 'https://friendica.mrpetovan.com/profile/hypolite',
69                                                 'name' => '@hypolite@friendica.mrpetovan.com'
70                                         ]
71                                 ],
72                         ],
73                         'issue-10617' => [
74                                 'expected' => '@[url=https://mastodon.technology/@sergey_m]sergey_m[/url]',
75                                 'body'     => '@[url=https://mastodon.technology/@sergey_m]sergey_m[/url]',
76                                 'tags'     => [
77                                         [
78                                                 'type' => 'Mention',
79                                                 'href' => 'https://mastodon.technology/@sergey_m',
80                                                 'name' => '@sergey_m'
81                                         ],
82                                 ],
83                         ],
84                 ];
85         }
86
87         /**
88          * @dataProvider dataAddMentionLinks
89          *
90          * @param string $expected
91          * @param string $body
92          * @param array $tags
93          */
94         public function testAddMentionLinks(string $expected, string $body, array $tags)
95         {
96                 $this->assertEquals($expected, ProcessorMock::addMentionLinks($body, $tags));
97         }
98 }