3 namespace Friendica\Test\src\Protocol\ActivityPub;
5 use PHPUnit\Framework\TestCase;
7 class ProcessorTest extends TestCase
9 public function dataNormalizeMentionLinks(): array
13 'expected' => '@[url=https://example.com]Example[/url]',
14 'body' => '[url=https://example.com]@Example[/url]',
17 'expected' => '#[url=https://example.com]Example[/url]',
18 'body' => '[url=https://example.com]#Example[/url]',
21 'expected' => '![url=https://example.com]Example[/url]',
22 'body' => '[url=https://example.com]!Example[/url]',
24 'wrong-hash-char' => [
25 'expected' => '[url=https://example.com]%Example[/url]',
26 'body' => '[url=https://example.com]%Example[/url]',
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]',
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]',
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]',
44 * @dataProvider dataNormalizeMentionLinks
46 * @param string $expected
49 public function testNormalizeMentionLinks(string $expected, string $body)
51 $this->assertEquals($expected, ProcessorMock::normalizeMentionLinks($body));
54 public function dataAddMentionLinks(): array
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 />',
63 'href' => 'https://social.wake.st/users/liaizon',
64 'name' => '@liaizon@social.wake.st'
68 'href' => 'https://friendica.mrpetovan.com/profile/hypolite',
69 'name' => '@hypolite@friendica.mrpetovan.com'
74 'expected' => '@[url=https://mastodon.technology/@sergey_m]sergey_m[/url]',
75 'body' => '@[url=https://mastodon.technology/@sergey_m]sergey_m[/url]',
79 'href' => 'https://mastodon.technology/@sergey_m',
88 * @dataProvider dataAddMentionLinks
90 * @param string $expected
94 public function testAddMentionLinks(string $expected, string $body, array $tags)
96 $this->assertEquals($expected, ProcessorMock::addMentionLinks($body, $tags));