From 3ea01ec8112cf4f899994b6d81a23bffe75d5b92 Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Wed, 25 Aug 2021 01:40:42 +0100 Subject: [PATCH] Ensure a talk has a title --- src/TwigExtension/TalkExtension.php | 13 ++++++++++++- tests/TalkExtensionTest.php | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/TwigExtension/TalkExtension.php b/src/TwigExtension/TalkExtension.php index aef6094eb..e02bb062b 100644 --- a/src/TwigExtension/TalkExtension.php +++ b/src/TwigExtension/TalkExtension.php @@ -7,6 +7,7 @@ namespace App\TwigExtension; use Illuminate\Support\Collection; use Twig\Extension\AbstractExtension; use Twig\TwigFunction; +use Webmozart\Assert\Assert; final class TalkExtension extends AbstractExtension { @@ -27,6 +28,16 @@ final class TalkExtension extends AbstractExtension $talkCollection = new Collection($talks); return $talkCollection - ->flatMap(fn($talk): array => (array) $talk['events']); + ->map(fn($talk): array => (array) $talk['events']) + ->filter(function (array $event): bool { + try { + Assert::keyExists($event, 'title'); + + return true; + } + catch (\RuntimeException $e) { + return false; + } + }); } } diff --git a/tests/TalkExtensionTest.php b/tests/TalkExtensionTest.php index 7b1bc4c51..faa0ecf4b 100644 --- a/tests/TalkExtensionTest.php +++ b/tests/TalkExtensionTest.php @@ -27,7 +27,7 @@ final class TalkExtensionTest extends TestCase [ 'title' => 'Building static sites with Sculpin', 'events' => [ - '', + 'title' => 'Building static websites with Sculpin', ] ], ];