Files
WP-LIT-MCP/tests/Unit/Integrations/Divi/Design/FontNameRulesTest.php
T

63 lines
2.8 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
declare(strict_types=1);
namespace LIT\MCP\Tests\Unit\Integrations\Divi\Design;
use LIT\MCP\Integrations\Divi\Design\FontNameRules;
use PHPUnit\Framework\TestCase;
final class FontNameRulesTest extends TestCase
{
private const RESERVED = ['Open Sans', 'Roboto', 'Arial', 'Times New Roman', 'Hausschrift'];
public function testLettersDigitsSpacesUnderscoresAndHyphensAreAllowed(): void
{
self::assertNull(FontNameRules::check('Inter Display_2-Bold'));
self::assertNull(FontNameRules::check('X'));
}
public function testOtherCharactersAreRefusedWithTheNameDiviWouldStore(): void
{
$problem = (string) FontNameRules::check('Grotesk (Pro)!');
self::assertStringContainsString('nur Buchstaben', $problem);
self::assertStringContainsString('„Grotesk Pro“', $problem);
self::assertStringContainsString('„Mller“', (string) FontNameRules::check('Müller'));
self::assertStringContainsString('nur Buchstaben', (string) FontNameRules::check('a.b'));
self::assertStringContainsString('nur Buchstaben', (string) FontNameRules::check("Tab\tName"));
self::assertStringContainsString('nichts übrig', (string) FontNameRules::check('«»'));
}
public function testEmptyAndPaddedNamesAreRefused(): void
{
self::assertStringContainsString('1–100 Zeichen', (string) FontNameRules::check(''));
self::assertStringContainsString('1–100 Zeichen', (string) FontNameRules::check(' '));
self::assertStringContainsString('Anfang oder Ende', (string) FontNameRules::check(' Inter'));
self::assertStringContainsString('Anfang oder Ende', (string) FontNameRules::check('Inter '));
}
public function testTheLengthLimitIsOneHundredCharactersOrDivisBound(): void
{
self::assertNull(FontNameRules::check(str_repeat('a', 100)));
self::assertStringContainsString(
'höchstens 100 Zeichen (101 angegeben)',
(string) FontNameRules::check(str_repeat('a', 101))
);
self::assertStringContainsString(
'höchstens 50 Zeichen',
(string) FontNameRules::check(str_repeat('a', 51), 50)
);
}
public function testNamesOfGoogleWebSafeAndUploadedFontsAreTakenWhateverTheCase(): void
{
self::assertSame('Open Sans', FontNameRules::taken('open sans', self::RESERVED));
self::assertSame('Arial', FontNameRules::taken('ARIAL', self::RESERVED), 'web-safe fonts too (Divi skips them)');
self::assertSame('Hausschrift', FontNameRules::taken('Hausschrift', self::RESERVED));
self::assertNull(FontNameRules::taken('Open Sans Pro', self::RESERVED));
self::assertNull(FontNameRules::taken('Roboto', []));
self::assertNull(FontNameRules::check('times new roman'), 'the form is fine; the collision is taken()');
}
}