allows('names')->andReturn(self::NAMES); $fonts->allows('has')->andReturnUsing(static fn (string $name): bool => in_array($name, self::NAMES, true)); return $fonts; } public function testAKnownFontIsFine(): void { $fonts = self::catalog(); $fonts->shouldNotReceive('names'); self::assertNull(FontCheck::problem($fonts, 'Roboto Mono')); } /** Ruling W5: the name is exact – "roboto" is unknown, but gets "Roboto" as suggestion. */ public function testAnUnknownFontGetsSimilarNames(): void { self::assertSame( sprintf( 'unbekannte Schrift „roboto“; ähnlich: %s', implode(', ', FontSuggest::similar('roboto', self::NAMES)) ), FontCheck::problem(self::catalog(), 'roboto') ); self::assertStringContainsString('Roboto', (string) FontCheck::problem(self::catalog(), 'roboto')); } public function testWithoutSimilarNamesTheUploadToolIsNamed(): void { self::assertSame( 'unbekannte Schrift „Xyzzy Grotesk“; eigene Schriften lädt lit/divi-fonts-upload hoch', FontCheck::problem(self::catalog(), 'Xyzzy Grotesk') ); } }