From b28a6f69f9f2f542d234b22ef6da049fc1678f4d Mon Sep 17 00:00:00 2001 From: Brabli <67018167+Brabli@users.noreply.github.com> Date: Mon, 29 Aug 2022 23:17:00 +0100 Subject: [PATCH] Make sure required keys exist in pallete arrays --- src/Twig/Functions/IconExtension.php | 9 ++++- tests/Twig/Functions/IconExtensionTest.php | 40 +++++++++++++++++++--- 2 files changed, 44 insertions(+), 5 deletions(-) diff --git a/src/Twig/Functions/IconExtension.php b/src/Twig/Functions/IconExtension.php index d0e4e3b..84137f1 100644 --- a/src/Twig/Functions/IconExtension.php +++ b/src/Twig/Functions/IconExtension.php @@ -41,7 +41,14 @@ final class IconExtension extends AbstractExtension throw new \TypeError('Palletes array must only contain arrays!'); foreach ($this->palletes as $pallete) { - if (!(array_key_exists('stroke', $pallete) && array_key_exists('fill', $pallete))) { + if (!( + array_key_exists('stroke', $pallete) && + array_key_exists('fill', $pallete) && + array_key_exists('fill-hover', $pallete) && + array_key_exists('stroke-hover', $pallete) && + array_key_exists('fill-group-hover', $pallete) && + array_key_exists('stroke-group-hover', $pallete)) + ) { throw new \Exception('Palletes must contain a "stroke" and "fill" key!'); } } diff --git a/tests/Twig/Functions/IconExtensionTest.php b/tests/Twig/Functions/IconExtensionTest.php index 459f6b9..ae6f3aa 100644 --- a/tests/Twig/Functions/IconExtensionTest.php +++ b/tests/Twig/Functions/IconExtensionTest.php @@ -15,12 +15,20 @@ class IconExtensionTest extends TestCase private const PALLETES = [ 'primary' => [ + 'fill' => 'fill-primary', 'stroke' => 'stroke-primary', - 'fill' => 'fill-primary' + 'fill-hover' => 'hover:fill-primary', + 'stroke-hover' => 'hover:stroke-primary', + 'fill-group-hover' => 'group-hover:fill-primary', + 'stroke-group-hover' => 'group-hover:stroke-primary', ], 'white' => [ + 'fill' => 'fill-white', 'stroke' => 'stroke-white', - 'fill' => 'fill-white' + 'fill-hover' => 'hover:fill-white', + 'stroke-hover' => 'hover:stroke-white', + 'fill-group-hover' => 'group-hover:fill-white', + 'stroke-group-hover' => 'group-hover:stroke-white', ] ]; @@ -182,13 +190,37 @@ class IconExtensionTest extends TestCase public function testThrowsIfChildArrayDoesntContainStrokeKey(): void { $this->expectException(\Exception::class); - new IconExtension(['/'], [['fill' => '']]); + new IconExtension(['/'], [['fill' => '', 'fill-hover' => '', 'stroke-hover' => '', 'fill-group-hover' => '', 'stroke-group-hover' => '']]); } public function testThrowsIfChildArrayDoesntContainFillKey(): void { $this->expectException(\Exception::class); - new IconExtension(['/'], [['stroke' => '']]); + new IconExtension(['/'], [['stroke' => '', 'fill-hover' => '', 'stroke-hover' => '', 'fill-group-hover' => '', 'stroke-group-hover' => '']]); + } + + public function testThrowsIfChildArrayDoesntContainFillHoverKey(): void + { + $this->expectException(\Exception::class); + new IconExtension(['/'], [['fill' => '', 'stroke' => '', 'stroke-hover' => '', 'fill-group-hover' => '', 'stroke-group-hover' => '']]); + } + + public function testThrowsIfChildArrayDoesntContainStrokeHoverKey(): void + { + $this->expectException(\Exception::class); + new IconExtension(['/'], [['fill' => '', 'stroke' => '', 'fill-hover' => '', 'fill-group-hover' => '', 'stroke-group-hover' => '']]); + } + + public function testThrowsIfChildArrayDoesntContainFillGroupHoverKey(): void + { + $this->expectException(\Exception::class); + new IconExtension(['/'], [['fill' => '', 'stroke' => '', 'fill-hover' => '', 'stroke-hover' => '', 'stroke-group-hover' => '']]); + } + + public function testThrowsIfChildArrayDoesntContainStrokeGroupHoverKey(): void + { + $this->expectException(\Exception::class); + new IconExtension(['/'], [['fill' => '', 'stroke' => '', 'fill-hover' => '', 'stroke-hover' => '', 'fill-group-hover' => '']]); } public function testBlackStrokeAttributeValuesAreRemoved(): void