X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=tests%2Fsrc%2FContent%2FText%2FBBCodeTest.php;h=7db69eef3900c882e60039ef31b7768ca15fdac8;hb=ab8997f9db910ba70c592bf106a7f5fc41a55b2d;hp=f155eeee3d99a57cff3bcdf0034094f2981377aa;hpb=7b91c26c3160e3d13e46efda0f7a77ccb1b99083;p=friendica.git diff --git a/tests/src/Content/Text/BBCodeTest.php b/tests/src/Content/Text/BBCodeTest.php index f155eeee3d..7db69eef39 100644 --- a/tests/src/Content/Text/BBCodeTest.php +++ b/tests/src/Content/Text/BBCodeTest.php @@ -1,111 +1,274 @@ -setUpVfsDir(); - $this->mockApp($this->root); - $this->app->videowidth = 425; - $this->app->videoheight = 350; - $this->configMock->shouldReceive('get') - ->with('system', 'remove_multiplicated_lines') - ->andReturn(false); - $this->configMock->shouldReceive('get') - ->with('system', 'no_oembed') - ->andReturn(false); - $this->configMock->shouldReceive('get') - ->with('system', 'allowed_link_protocols') - ->andReturn(null); - $this->configMock->shouldReceive('get') - ->with('system', 'itemcache_duration') - ->andReturn(-1); - $this->mockL10nT(); - } - - public function dataLinks() - { - return [ - /** @see https://github.com/friendica/friendica/issues/2487 */ - 'bug-2487-1' => [ - 'data' => 'https://de.wikipedia.org/wiki/Juha_Sipilä', - 'assertHTML' => true, - ], - 'bug-2487-2' => [ - 'data' => 'https://de.wikipedia.org/wiki/Dnepr_(Motorradmarke)', - 'assertHTML' => true, - ], - 'bug-2487-3' => [ - 'data' => 'https://friendica.wäckerlin.ch/friendica', - 'assertHTML' => true, - ], - 'bug-2487-4' => [ - 'data' => 'https://mastodon.social/@morevnaproject', - 'assertHTML' => true, - ], - /** @see https://github.com/friendica/friendica/issues/5795 */ - 'bug-5795' => [ - 'data' => 'https://social.nasqueron.org/@liw/100798039015010628', - 'assertHTML' => true, - ], - /** @see https://github.com/friendica/friendica/issues/6095 */ - 'bug-6095' => [ - 'data' => 'https://en.wikipedia.org/wiki/Solid_(web_decentralization_project)', - 'assertHTML' => true, - ], - 'no-protocol' => [ - 'data' => 'example.com/path', - 'assertHTML' => false - ], - 'wrong-protocol' => [ - 'data' => 'ftp://example.com', - 'assertHTML' => false - ], - 'wrong-domain-without-path' => [ - 'data' => 'http://example', - 'assertHTML' => false - ], - 'wrong-domain-with-path' => [ - 'data' => 'http://example/path', - 'assertHTML' => false - ], - ]; - } - - /** - * Test convert different links inside a text - * @dataProvider dataLinks - * - * @param string $data The data to text - * @param bool $assertHTML True, if the link is a HTML link (...) - * @throws \Friendica\Network\HTTPException\InternalServerErrorException - */ - public function testAutoLinking($data, $assertHTML) - { - $output = BBCode::convert($data); - if ($assertHTML) { - $assert = '' . $data . ''; - } else { - $assert = $data; - } - - $this->assertEquals($assert, $output); - } -} \ No newline at end of file +setUpVfsDir(); + $this->mockApp($this->root); + $this->app->videowidth = 425; + $this->app->videoheight = 350; + $this->configMock->shouldReceive('get') + ->with('system', 'remove_multiplicated_lines') + ->andReturn(false); + $this->configMock->shouldReceive('get') + ->with('system', 'no_oembed') + ->andReturn(false); + $this->configMock->shouldReceive('get') + ->with('system', 'allowed_link_protocols') + ->andReturn(null); + $this->configMock->shouldReceive('get') + ->with('system', 'itemcache_duration') + ->andReturn(-1); + $this->configMock->shouldReceive('get') + ->with('system', 'url') + ->andReturn('friendica.local'); + $this->configMock->shouldReceive('get') + ->with('system', 'no_smilies') + ->andReturn(false); + + $l10nMock = \Mockery::mock(L10n::class); + $l10nMock->shouldReceive('t')->withAnyArgs()->andReturnUsing(function ($args) { return $args; }); + $this->dice->shouldReceive('create') + ->with(L10n::class) + ->andReturn($l10nMock); + + $baseUrlMock = \Mockery::mock(BaseURL::class); + $baseUrlMock->shouldReceive('get')->withAnyArgs()->andReturn('friendica.local'); + $this->dice->shouldReceive('create') + ->with(BaseURL::class) + ->andReturn($baseUrlMock); + } + + public function dataLinks() + { + return [ + /** @see https://github.com/friendica/friendica/issues/2487 */ + 'bug-2487-1' => [ + 'data' => 'https://de.wikipedia.org/wiki/Juha_Sipilä', + 'assertHTML' => true, + ], + 'bug-2487-2' => [ + 'data' => 'https://de.wikipedia.org/wiki/Dnepr_(Motorradmarke)', + 'assertHTML' => true, + ], + 'bug-2487-3' => [ + 'data' => 'https://friendica.wäckerlin.ch/friendica', + 'assertHTML' => true, + ], + 'bug-2487-4' => [ + 'data' => 'https://mastodon.social/@morevnaproject', + 'assertHTML' => true, + ], + /** @see https://github.com/friendica/friendica/issues/5795 */ + 'bug-5795' => [ + 'data' => 'https://social.nasqueron.org/@liw/100798039015010628', + 'assertHTML' => true, + ], + /** @see https://github.com/friendica/friendica/issues/6095 */ + 'bug-6095' => [ + 'data' => 'https://en.wikipedia.org/wiki/Solid_(web_decentralization_project)', + 'assertHTML' => true, + ], + 'no-protocol' => [ + 'data' => 'example.com/path', + 'assertHTML' => false + ], + 'wrong-protocol' => [ + 'data' => 'ftp://example.com', + 'assertHTML' => false + ], + 'wrong-domain-without-path' => [ + 'data' => 'http://example', + 'assertHTML' => false + ], + 'wrong-domain-with-path' => [ + 'data' => 'http://example/path', + 'assertHTML' => false + ], + 'bug-6857-domain-start' => [ + 'data' => "http://\nexample.com", + 'assertHTML' => false + ], + 'bug-6857-domain-end' => [ + 'data' => "http://example\n.com", + 'assertHTML' => false + ], + 'bug-6857-tld' => [ + 'data' => "http://example.\ncom", + 'assertHTML' => false + ], + 'bug-6857-end' => [ + 'data' => "http://example.com\ntest", + 'assertHTML' => false + ], + 'bug-6901' => [ + 'data' => "http://example.com
<
',
+ 'text' => '[code]<[/code]',
+ ],
+ 'bug-7808-code-gt' => [
+ 'expectedHtml' => '>
',
+ 'text' => '[code]>[/code]',
+ ],
+ 'bug-7808-code-amp' => [
+ 'expectedHtml' => '&
',
+ 'text' => '[code]&[/code]',
+ ]
+ ];
+ }
+
+ /**
+ * Test convert bbcodes to HTML
+ *
+ * @dataProvider dataBBCodes
+ *
+ * @param string $expectedHtml Expected HTML output
+ * @param string $text BBCode text
+ * @param bool $try_oembed Whether to convert multimedia BBCode tag
+ * @param int $simpleHtml BBCode::convert method $simple_html parameter value, optional.
+ * @param bool $forPlaintext BBCode::convert method $for_plaintext parameter value, optional.
+ * @throws \Friendica\Network\HTTPException\InternalServerErrorException
+ */
+ public function testConvert($expectedHtml, $text, $try_oembed = false, $simpleHtml = 0, $forPlaintext = false)
+ {
+ $actual = BBCode::convert($text, $try_oembed, $simpleHtml, $forPlaintext);
+
+ $this->assertEquals($expectedHtml, $actual);
+ }
+
+ public function dataBBCodesToMarkdown()
+ {
+ return [
+ 'bug-7808-gt' => [
+ 'expected' => '>`>`',
+ 'text' => '>[code]>[/code]',
+ ],
+ 'bug-7808-lt' => [
+ 'expected' => '<`<`',
+ 'text' => '<[code]<[/code]',
+ ],
+ 'bug-7808-amp' => [
+ 'expected' => '&`&`',
+ 'text' => '&[code]&[/code]',
+ ],
+ ];
+ }
+
+ /**
+ * Test convert bbcodes to Markdown
+ *
+ * @dataProvider dataBBCodesToMarkdown
+ *
+ * @param string $expected Expected Markdown output
+ * @param string $text BBCode text
+ * @param bool $for_diaspora
+ * @throws \Friendica\Network\HTTPException\InternalServerErrorException
+ */
+ public function testToMarkdown($expected, $text, $for_diaspora = false)
+ {
+ $actual = BBCode::toMarkdown($text, $for_diaspora);
+
+ $this->assertEquals($expected, $actual);
+ }
+}