* @copyright Copyright (C) 2026 Moko Consulting. All rights reserved. * @license GNU General Public License version 3 or later; see LICENSE * SPDX-License-Identifier: GPL-3.0-or-later */ namespace MokoSuiteCross\Tests\Unit\Helper; use Joomla\Component\MokoSuiteCross\Administrator\Helper\ServiceIconHelper; use PHPUnit\Framework\TestCase; class ServiceIconHelperTest extends TestCase { /** * @dataProvider knownServiceTypesProvider */ public function testGetIconReturnsKnownIcon(string $serviceType, string $expectedIcon): void { $this->assertSame($expectedIcon, ServiceIconHelper::getIcon($serviceType)); } public static function knownServiceTypesProvider(): array { return [ 'facebook' => ['facebook', 'icon-facebook'], 'twitter' => ['twitter', 'icon-twitter'], 'linkedin' => ['linkedin', 'icon-linkedin'], 'mastodon' => ['mastodon', 'icon-globe'], 'bluesky' => ['bluesky', 'icon-cloud'], 'telegram' => ['telegram', 'icon-paper-plane'], 'discord' => ['discord', 'icon-headset'], 'slack' => ['slack', 'icon-hashtag'], 'mailchimp' => ['mailchimp', 'icon-envelope'], 'medium' => ['medium', 'icon-book'], ]; } public function testGetIconReturnsFallbackForUnknownType(): void { $this->assertSame('icon-share-alt', ServiceIconHelper::getIcon('unknown_platform')); } public function testRenderIconOutputsSpanElement(): void { $html = ServiceIconHelper::renderIcon('facebook'); $this->assertSame('', $html); } public function testRenderIconWithExtraClass(): void { $html = ServiceIconHelper::renderIcon('twitter', 'me-1 text-info'); $this->assertSame('', $html); } public function testRenderIconEscapesExtraClass(): void { $html = ServiceIconHelper::renderIcon('facebook', '">