]> git.mxchange.org Git - friendica.git/commitdiff
Add tests for a couple of static methods of Protocol\ActivityPub\Processor
authorHypolite Petovan <hypolite@mrpetovan.com>
Tue, 17 Aug 2021 12:54:16 +0000 (08:54 -0400)
committerHypolite Petovan <hypolite@mrpetovan.com>
Wed, 18 Aug 2021 18:36:45 +0000 (14:36 -0400)
tests/src/Protocol/ActivityPub/ProcessorMock.php [new file with mode: 0644]
tests/src/Protocol/ActivityPub/ProcessorTest.php [new file with mode: 0644]

diff --git a/tests/src/Protocol/ActivityPub/ProcessorMock.php b/tests/src/Protocol/ActivityPub/ProcessorMock.php
new file mode 100644 (file)
index 0000000..8d509bf
--- /dev/null
@@ -0,0 +1,40 @@
+<?php
+/**
+ * @copyright Copyright (C) 2010-2021, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace Friendica\Test\src\Protocol\ActivityPub;
+
+use Friendica\Protocol\ActivityPub\Processor;
+
+/**
+ * Class ProcessorMock
+ *
+ * Exposes protected methods for test in the inherited class
+ *
+ * @method static string addMentionLinks(string $body, array $tags)
+ * @method static string normalizeMentionLinks(string $body)
+ */
+class ProcessorMock extends Processor
+{
+       public static function __callStatic($name, $arguments)
+       {
+               return self::$name(...$arguments);
+       }
+}
diff --git a/tests/src/Protocol/ActivityPub/ProcessorTest.php b/tests/src/Protocol/ActivityPub/ProcessorTest.php
new file mode 100644 (file)
index 0000000..894e90a
--- /dev/null
@@ -0,0 +1,87 @@
+<?php
+
+namespace Friendica\Test\src\Protocol\ActivityPub;
+
+use PHPUnit\Framework\TestCase;
+
+class ProcessorTest extends TestCase
+{
+       public function dataNormalizeMentionLinks(): array
+       {
+               return [
+                       'one-link-@' => [
+                               'expected' => '@[url=https://example.com]Example[/url]',
+                               'body'     => '[url=https://example.com]@Example[/url]',
+                       ],
+                       'one-link-#' => [
+                               'expected' => '#[url=https://example.com]Example[/url]',
+                               'body'     => '[url=https://example.com]#Example[/url]',
+                       ],
+                       'one-link-!' => [
+                               'expected' => '![url=https://example.com]Example[/url]',
+                               'body'     => '[url=https://example.com]!Example[/url]',
+                       ],
+                       'wrong-hash-char' => [
+                               'expected' => '[url=https://example.com]%Example[/url]',
+                               'body'     => '[url=https://example.com]%Example[/url]',
+                       ],
+                       'multiple-links' => [
+                               'expected' => '@[url=https://example.com]Example[/url] #[url=https://example.com]Example[/url] ![url=https://example.com]Example[/url]',
+                               'body'     => '[url=https://example.com]@Example[/url] [url=https://example.com]#Example[/url] [url=https://example.com]!Example[/url]',
+                       ],
+                       'already-correct-format' => [
+                               'expected' => '@[url=https://example.com]Example[/url] #[url=https://example.com]Example[/url] ![url=https://example.com]Example[/url]',
+                               'body'     => '@[url=https://example.com]Example[/url] #[url=https://example.com]Example[/url] ![url=https://example.com]Example[/url]',
+                       ],
+                       'mixed-format' => [
+                               '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]',
+                               '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]',
+                       ],
+               ];
+       }
+
+       /**
+        * @dataProvider dataNormalizeMentionLinks
+        *
+        * @param string $expected
+        * @param string $body
+        */
+       public function testNormalizeMentionLinks(string $expected, string $body)
+       {
+               $this->assertEquals($expected, ProcessorMock::normalizeMentionLinks($body));
+       }
+
+       public function dataAddMentionLinks(): array
+       {
+               return [
+                       'issue-10603' => [
+                               '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 />',
+                               'body'     => '@liaizon@social.wake.st @hypolite@friendica.mrpetovan.com yes<br /><br />',
+                               'tags'     => [
+                                       [
+                                               'type' => 'Mention',
+                                               'href' => 'https://social.wake.st/users/liaizon',
+                                               'name' => '@liaizon@social.wake.st'
+                                       ],
+                                       [
+                                               'type' => 'Mention',
+                                               'href' => 'https://friendica.mrpetovan.com/profile/hypolite',
+                                               'name' => '@hypolite@friendica.mrpetovan.com'
+                                       ]
+                               ],
+                       ],
+               ];
+       }
+
+       /**
+        * @dataProvider dataAddMentionLinks
+        *
+        * @param string $expected
+        * @param string $body
+        * @param array $tags
+        */
+       public function testAddMentionLinks(string $expected, string $body, array $tags)
+       {
+               $this->assertEquals($expected, ProcessorMock::addMentionLinks($body, $tags));
+       }
+}