From c3c46f434f576aec8a18fde3551a62c51c63d6cb Mon Sep 17 00:00:00 2001 From: Michael Hitzler <michael.hitzler@paravista.de> Date: Tue, 10 Oct 2023 17:12:34 +0200 Subject: [PATCH] [BUGFIX] Use telephone as fallback for link text Resolves: #102139 Releases: main, 12.4 Change-Id: I9eb3b759de4af5c322aedc96df169aa7c603add6 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/81405 Tested-by: core-ci <typo3@b13.com> Reviewed-by: Oliver Bartsch <bo@cedev.de> Tested-by: Garvin Hicking <gh@faktor-e.de> Reviewed-by: Garvin Hicking <gh@faktor-e.de> Tested-by: Oliver Bartsch <bo@cedev.de> --- .../Classes/Typolink/TelephoneLinkBuilder.php | 1 + .../Typolink/TelephoneLinkBuilderTest.php | 74 +++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 typo3/sysext/frontend/Tests/Unit/Typolink/TelephoneLinkBuilderTest.php diff --git a/typo3/sysext/frontend/Classes/Typolink/TelephoneLinkBuilder.php b/typo3/sysext/frontend/Classes/Typolink/TelephoneLinkBuilder.php index 6054d98940ce..aa91307309e1 100644 --- a/typo3/sysext/frontend/Classes/Typolink/TelephoneLinkBuilder.php +++ b/typo3/sysext/frontend/Classes/Typolink/TelephoneLinkBuilder.php @@ -24,6 +24,7 @@ class TelephoneLinkBuilder extends AbstractTypolinkBuilder { public function build(array &$linkDetails, string $linkText, string $target, array $conf): LinkResultInterface { + $linkText = $linkText ?: $linkDetails['telephone'] ?? ''; return (new LinkResult($linkDetails['type'], $linkDetails['typoLinkParameter']))->withLinkConfiguration($conf)->withLinkText($linkText); } } diff --git a/typo3/sysext/frontend/Tests/Unit/Typolink/TelephoneLinkBuilderTest.php b/typo3/sysext/frontend/Tests/Unit/Typolink/TelephoneLinkBuilderTest.php new file mode 100644 index 000000000000..7f9b8b30102a --- /dev/null +++ b/typo3/sysext/frontend/Tests/Unit/Typolink/TelephoneLinkBuilderTest.php @@ -0,0 +1,74 @@ +<?php + +declare(strict_types=1); + +/* + * This file is part of the TYPO3 CMS project. + * + * It is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License, either version 2 + * of the License, or any later version. + * + * For the full copyright and license information, please read the + * LICENSE.txt file that was distributed with this source code. + * + * The TYPO3 project - inspiring people to share! + */ + +namespace TYPO3\CMS\Frontend\Tests\Unit\Typolink; + +use PHPUnit\Framework\Attributes\Test; +use TYPO3\CMS\Frontend\Typolink\TelephoneLinkBuilder; +use TYPO3\TestingFramework\Core\Unit\UnitTestCase; + +final class TelephoneLinkBuilderTest extends UnitTestCase +{ + #[Test] + public function noLinkTextForMissingDetailAndNoLinkTextProvided(): void + { + $linkDetails = [ + 'type' => 'telephone', + 'typoLinkParameter' => 'tel:+49 221 4710 999', + ]; + $subject = $this->getAccessibleMock(TelephoneLinkBuilder::class, null, [], '', false); + $actualResult = $subject->build($linkDetails, '', '', []); + self::assertSame('', $actualResult->getLinkText()); + } + + #[Test] + public function respectsProvidedLinkText(): void + { + $linkDetails = [ + 'type' => 'telephone', + 'typoLinkParameter' => 'tel:+49 221 4710 999', + ]; + $subject = $this->getAccessibleMock(TelephoneLinkBuilder::class, null, [], '', false); + $actualResult = $subject->build($linkDetails, 'Phone number', '', []); + self::assertSame('Phone number', $actualResult->getLinkText()); + } + + #[Test] + public function fallsBackToPhoneNumberOnMissingLinkText(): void + { + $linkDetails = [ + 'type' => 'telephone', + 'typoLinkParameter' => 'tel:+49 221 4710 999', + 'telephone' => '+49 221 4710 999', + ]; + $subject = $this->getAccessibleMock(TelephoneLinkBuilder::class, null, [], '', false); + $actualResult = $subject->build($linkDetails, '', '', []); + self::assertSame('+49 221 4710 999', $actualResult->getLinkText()); + } + + #[Test] + public function respectsProvidedLinkParameter(): void + { + $linkDetails = [ + 'type' => 'telephone', + 'typoLinkParameter' => 'tel:+49 221 4710 999', + ]; + $subject = $this->getAccessibleMock(TelephoneLinkBuilder::class, null, [], '', false); + $actualResult = $subject->build($linkDetails, '', '', []); + self::assertSame('tel:+49 221 4710 999', $actualResult->getUrl()); + } +} -- GitLab